| Autor |
Beitrag |
mjoellnir
Hält's aus hier
Beiträge: 6
|
Verfasst: So 25.05.08 15:25
Hallo Delphianer,
Ich hab da mal 'ne Frage:
ich habe eine .txt - Datei mit nen haufen Text drin stehen und möchte einen bestimmten Abschnitt den ich mit %Platzhalter_anfang% beginne und mit %Platzhalter_ende% wieder beende durch einen anderen String ersetzen.
Wie könnte ich das elegant realisieren??
Danke im Voraus
Mjöllnir
|
|
Narses
      

Beiträge: 10185
Erhaltene Danke: 1261
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: So 25.05.08 15:28
Moin und  im Forum!
mjoellnir hat folgendes geschrieben: | | ich habe eine .txt - Datei mit nen haufen Text drin stehen |
Sag mal was zur Menge Daten, 1KB oder 1GB?
mjoellnir hat folgendes geschrieben: | | und möchte einen bestimmten Abschnitt den ich mit %Platzhalter_anfang% beginne und mit %Platzhalter_ende% wieder beende durch einen anderen String ersetzen. |
Wieviele Ersetzungen sollen es denn werden? Genau eine im gesamten Text?
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
mjoellnir 
Hält's aus hier
Beiträge: 6
|
Verfasst: So 25.05.08 15:35
Die Datei ist grobgeschätzt 200 KB groß
Ersetzungen? Der gesamte Text der zwischen den beiden Platzhaltern steht muss ersetzt werden--> manchmal sind es vielleicht nur 500 Zeichen manchmal aber auch 5000 Zeichen oder noch mehr
|
|
Narses
      

Beiträge: 10185
Erhaltene Danke: 1261
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: So 25.05.08 15:46
Moin!
mjoellnir hat folgendes geschrieben: | | Die Datei ist grobgeschätzt 200 KB groß |
OK.
mjoellnir hat folgendes geschrieben: | | Ersetzungen? Der gesamte Text der zwischen den beiden Platzhaltern steht muss ersetzt werden--> manchmal sind es vielleicht nur 500 Zeichen manchmal aber auch 5000 Zeichen oder noch mehr |
Ja, die Menge zu ersetzender Text ist weniger entscheidend, sondern die Häufigkeit. Also es soll im Text genau 1 Ersetzung durchgeführt werden, korrekt?
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
mjoellnir 
Hält's aus hier
Beiträge: 6
|
Verfasst: So 25.05.08 15:48
genau eine ersetzung ! ganz genau
|
|
Narses
      

Beiträge: 10185
Erhaltene Danke: 1261
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: So 25.05.08 15:58
Moin!
In diesem speziellen Fall kann man glaub ich den StringReplace-Ansatz noch vertreten:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| var Datei: TFileStream; Inhalt: String; begin Datei := TFileStream.Create('C:\Test.txt',fmOpenRead or fmShareDenyWrite); try SetLength(Inhalt,Datei.Size); Datei.Read(PChar(Inhalt)^,Datei.Size); finally Datei.Free; end;
StringReplace(Inhalt,'%PLATZHALTER%','Neuer Wert',[rfIgnoreCase]); | Abspeichern geht fast genauso wie laden, nur eben andersrum.  Das darfst du dann aber auch mal selbst rausfinden.
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
mjoellnir 
Hält's aus hier
Beiträge: 6
|
Verfasst: So 25.05.08 16:03
mit stringreplace wird es wohl kaum funktionieren.
Folgende Konstellation in der txt - datei :
%Platzhalter_anfang%
Elenlanger Text steht jetzt hier zwischen und der will unbedingt ersetzt werden, dass jedenfalls flüstert mir eine fee zu
%Platzhalter_ende%
Der Text zwischen den Platzhaltern muss erstetzt werden und NICHT die Platzhalter
|
|
Narses
      

Beiträge: 10185
Erhaltene Danke: 1261
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: So 25.05.08 16:04
Moin!
mjoellnir hat folgendes geschrieben: | | Der Text zwischen den Platzhaltern muss erstetzt werden und NICHT die Platzhalter |
 Ach ja, wer lesen kann...
OK, leicht modifizieren, den Ansatz:  - Datei in String laden
- mit Pos() den Start des Anfang- und Ende-Platzhalters suchen
- den Teil bis zum Start-Platzhalter wieder in die Datei schreiben
- den Ersatz-Text in die Datei schreiben
- den Rest ab Ende-Platzhalter in die Datei schreiben
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
elundril
      
Beiträge: 3747
Erhaltene Danke: 123
Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
|
Verfasst: So 25.05.08 16:09
mist! zu langsam! 
_________________ This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
|
|
Narses
      

Beiträge: 10185
Erhaltene Danke: 1261
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: So 25.05.08 16:10
@elundril: soll ich den Post löschen? 
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|