If the replaced text is different in size than the find text, do you think it will work fine.
Ex. Find String = "AD00" & Replace String = "RR889"
>>Try this (modified from Cetin code) for testing if the replaced string is being split during FREADs:
>>
>>
>>#DEFINE MAXBUFFER 65536
>>lhIn = FOPEN(lcFileIn)
>>lhOut = FCREATE(lcFileOut)
>>DO WHILE NOT FEOF(m.lhIn )
>> lcBuffer = FREAD(m.lhIn, MAXBUFFER)
>> DO CASE
>> CASE RIGHT(lcBuffer,3) = 'AD0'
>> FSEEK(m.lhIn, -3, 1)
>> lcBuffer = LEFT(lcBuffer,LEN(lcBuffer)-3)
>> CASE RIGHT(lcBuffer,2) = 'AD'
>> FSEEK(m.lhIn, -2, 1)
>> lcBuffer = LEFT(lcBuffer,LEN(lcBuffer)-2)
>> CASE RIGHT(lcBuffer,1) = 'A'
>> FSEEK(m.lhIn, -1, 1)
>> lcBuffer = LEFT(lcBuffer,LEN(lcBuffer)-1)
>> ENDCASE
>> FWRITE(m.lhOut,STRTRAN(lcBuffer,'AD00','BR77'),MAXBUFFER)
>>ENDDO
>>FCLOSE(m.lhIn)
>>FCLOSE(m.lhOut)
>
>I didn't understand what Fabio meant either. Your code is nicer and faster than mine:) It processed a 138+Mb file in 14 secs on my box (Athlon 2500+,512Mb onboard 64Mbshared mem VGA).
>Cetin
I don't see where the size of the replace string would be of concern -- the FREAD pointer would not change for the input file since it is solely dependent on the string to be found (adjustments if possible matches at end of FREAD string). The replaced string would be in the output file and does not affect the pointer to the file position in the input file.
Previous
Next
Reply
View the map of this thread
View the map of this thread starting from this message only
View all messages of this thread
View all messages of this thread starting from this message only