lineoffset and regular expression ?

Brian Yennie briany at qldlearning.com
Wed Mar 31 15:08:57 EST 2004


Thierry,

If you have very large text variables and are searching the lines many 
times, you may want to consider using "repeat for each", which will 
avoid the problem of searching from the beginning of the string each 
time.

put 1 into i
repeat for each line theLine in text2lookAt
    if (theLine contains "String2Find") then
       put i into idx
       ...
    end if
    add 1 to i
end repeat

OR... if you don't mind using offset() instead of lineOffset(), it will 
work much faster. This is because chars are fixed size (whereas lines 
are not), so using the optional offset to skip is very fast- it just 
jumps immediately that many bytes into the string instead of counting 
off lines. Of course if what you really need is the line number, this 
won't help you too much because you'll still have to count off the line 
number somehow.

Lastly, if your search is simple enough and you don't need line 
numbers, you could try using the "filter" command.

HTH,

Brian

> in fact, one can use :
> put lineoffset( CR & "String2Find", text2lookAt, skippedLines ) into 
> idx
>
> it works well !
>
> but the problem i found then is the time expanding when the text2lookAt
> starts to grow... did the test with 900 Kb of text...
>
> So, instead of using skippedLines, i delete the line 1 to the 'idx' 
> line
> of the text2lookAt; get better result but still, not very fast. it 
> seems
> that the delete build in function has a strange behavior; very fast at
> the beginning of the text and more and more we go to the end of the 
> text,
> increase drastically in time ( delete more or less the same size ).



More information about the use-livecode mailing list