>>>TEXT to m.lcMyText noshow >>>0AD0AD0012123AD0012312AD0012341AD00AD0010123 >>>12AD0012123AD0012312AD0012341AD00AD0010123AD0012123AD0012312AD0012341AD00AD001 >>>ENDTEXT >>>lcTemp1 = Sys(2015)+'.txt' >>>lcTemp2 = Sys(2015)+'.txt' >>> >>>************************** look here *************************** >>>Strtofile(m.lcMytext+'A',m.lcTemp1) >>> >>>*!* lcTemp1 = 'bigfile.txt' && 138Mb >>>*!* lcTemp1 = 'bigfile.tx2' && 26Mb >>>*!* lcTemp2 = 'bigfile.ou2' >>> >>>#Define MAXBUFFER 5 >>> >>>lhIn = Fopen(m.lcTemp1) >>>lhOut = Fcreate(m.lcTemp2) >>>Set Step On >>>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) >>>Modify Comm (m.lcTemp2) >>>Erase (m.lcTemp1) >>>Erase (m.lcTemp2) >>>>>
>CLEAR > >TEXT to m.lcMyText noshow >0AD0AD0012123 >ENDTEXT >lcTemp1 = Sys(2015)+'.txt' > >Strtofile(m.lcMytext,m.lcTemp1) >? "TEXT :",m.lcMytext at 20 >? "CORRECT :",STRTRAN(m.lcMytext,'AD0A','BR77') at 20 > >#Define MAXBUFFER 5 > >lhIn = Fopen(m.lcTemp1) >bufferout = '' > >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 > bufferout = bufferout + Strtran(lcBuffer,'AD0A','BR77') >Enddo >Fclose(m.lhIn) >Erase (m.lcTemp1) >? "result : ",bufferout at 20 >You're trying to create clouds. We'd end up writing the whole code.
Do While Not Feof(m.lhIn ) lcBuffer = Strtran(Fread(m.lhIn, MAXBUFFER),'AD0A','BR77') If Len(m.lcBuffer) = 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(m.lcBuffer,Len(m.lcBuffer)-2) Case Right(m.lcBuffer,1) = 'A' Fseek(m.lhIn, -1, 1) lcBuffer = Left(m.lcBuffer,Len(m.lcBuffer)-1) Endcase Endif Fwrite(m.lhOut,m.lcBuffer,MAXBUFFER) EnddoAre you testing me if I could make it bulletproof for all type of search and replace strings:) As I said if I ever need this really I'd create a FLL instead. I don't plan to find a bulletproof code.