Add text in middle of existing file

KABOUTERKABOUTER Member Posts: 30
edited 2006-08-31 in Navision Attain
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?

Comments

  • KowaKowa Member Posts: 923
    After determining the STRPOS, use the INSSTR Function to insert the substring at the right position.
    Kai Kowalewski
Sign In or Register to comment.