Hallo
ms6 hat folgendes geschrieben: |
| Mit dem gleichen Quelltext treten im rtf-Dokument keine Änderungen auf, so dass ich nicht mal ein einfaches Hallo anhängen könnte. |
doch, das "Hallo" wird schon angehängt, man sieht es nur nicht wenn die Datei in einem RichEdit oder auch in Word angezeigt wird. Dein Code hängt den String an das Ende der Daten, aber außerhalb des Format-Codebereich, der durch den RTF-Reader interpretiert wird.
Bau Dir mal eine Test-Anwendung mit einem Memo und ein Richedit.
Integriere dann den folgenden Code in OnCreate der Form:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| procedure TForm1.FormCreate(Sender: TObject); var sL : TStringList; aFile : String; begin aFile := ExtractFilePath(paramstr(0))+'test.rtf'; RichEdit1.Text := 'Müll'; RichEdit1.Lines.SaveToFile(aFile); sL := TStringList.Create; try sL.LoadFromFile(aFile); sL.Add('Hallo'); sL.SaveToFile(aFile); finally sL.Free; end; RichEdit1.Lines.LoadFromFile(aFile); Memo1.Lines.LoadFromFile(aFile); end; |
Nach Start der Anwendung enthält das RichEdit den Text "Müll", "Hallo" ist nicht enthalten da es nicht gelesen wird.
Im Memo hast Du dann den RTF-Code:
| Zitat: |
{\rtf1\ansi\ansicpg1252\deff0\deflang1031{\fonttbl{\f0\fnil MS Sans Serif;}
{\f1\fnil\fcharset0 MS Sans Serif;}}
\viewkind4\uc1\pard\f0\fs16 M\'fcll\f0
\par }
Hallo |
Du siehst "Hallo" wurde hinzugefügt, aber hinter die geschweifte Klammer. Ein RTF-Reader liest nur den Teil zwischen
{ und
}.
(
das hab ich doch schon mal so ähnlich hier im Forum geschrieben 
)
Willst Du direkt im RTF-Code suchen muss man Umlaute, Sonderzeichen ... auch berücksichtigen,
siehe:
"M
üll" wird zu "M
\'fcll"
ü = 252 = #FC = \'fc
Daher nimm lieber ein Richedit(eventuell verborgen), lade darin die Datei, mach was damit, speicher den Text wieder.