Autor Beitrag
ms6
Hält's aus hier
Beiträge: 10

xp pro
delphi 5
BeitragVerfasst: Fr 29.09.06 15:20 
Hallo!

bei txt-Dateien ist es möglich diese zu öffnen und Text einzufügen, zu suchen usw..

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
procedure TForm1.Button7Click(Sender: TObject);
var stringlist: TStringList;
begin
  stringlist := TStringList.Create;
  try
    stringlist.LoadFromFile('D:\Test\zum testen\Köpfe\Kopf_SC.txt');
    if pos('abSC', stringlist.Text)=1 then begin
      stringlist.Add('Hallo');
      stringlist.SaveToFile('D:\Test\zum testen\Köpfe\Kopf_SC.txt');
      ShowMessage('abSC gefunden.');
    end;
  finally
    
  end;
end;


Wie ist es möglich RTF-Dateien zu öffnen und zu bearbeiten, d.h. das gefundene (hier im Beispiel "abSC")
soll an allen stellen im Dokument durch cdFH ersetzt werden.

Mit dem gleichen Quelltext treten im rtf-Dokument keine Änderungen auf, so dass ich nicht mal ein einfaches Hallo anhängen könnte.

Ich hoffe jemand von euch kann mir helfen.

Moderiert von user profile iconraziel: Delphi-Tags hinzugefügt
Lannes
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: Fr 29.09.06 21:08 
Hallo
user profile iconms6 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:
ausblenden 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 :gruebel:)

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.

_________________
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )