I want to be able to read from file, then find a certain position, (matching text).
I then close the file and open it again for writemode = true.
Now I want to find that same position and INSERT some text at that position WITHOUT losing the rest of the writing.
Because the file is very big, I DO NOT want to stream from one file to another file (line by Line).
This is the code I use, but it does not work - it just wipes out everything in the existing file :
Reading from file :
SeekString := 'writing';
ReadXMLFile.OPEN(ReadFileName);
ReadXMLFile.CREATEINSTREAM(InStr);
WHILE NOT (InStr.EOS()) DO BEGIN
InStr.READTEXT(InTxt);
Pos := STRPOS(InTxt,SeekString);
IF Pos <> 0 THEN BEGIN
MESSAGE(InTxt);
InsertPos := Pos + STRLEN(SeekString) + 1;
ReadXMLFile.CLOSE;
EXIT(InsertPos);
END;
Pos := Pos + 1;
END;
IF Insertpos returned <> 0 then I write to the file.
Writing to same file :
WriteString := 'any junk';
WriteXMLFile.WRITEMODE := TRUE;
WriteXMLFile.OPEN(WriteFileName);
WriteXMLFile.CREATEOUTSTREAM(OutStr);
WriteXMLFile.SEEK(Pos);
OutStr.WRITETEXT(WriteString);
WriteXMLFile.CLOSE;
So if the original file content looked like this :
"Hello this is my writing for my mother."
I want to change the file content to read :
"Hello this is my writing any junk for my mother."
What am I doing wrong?
0
Comments