Autor Beitrag
mjoellnir
Hält's aus hier
Beiträge: 6



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: So 25.05.08 15:28 
Moin und :welcome: im Forum!

user profile iconmjoellnir hat folgendes geschrieben:
ich habe eine .txt - Datei mit nen haufen Text drin stehen
Sag mal was zur Menge Daten, 1KB oder 1GB?

user profile iconmjoellnir 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 Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: So 25.05.08 15:46 
Moin!

user profile iconmjoellnir hat folgendes geschrieben:
Die Datei ist grobgeschätzt 200 KB groß
OK.

user profile iconmjoellnir 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 Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: So 25.05.08 15:48 
genau eine ersetzung ! ganz genau
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: So 25.05.08 15:58 
Moin!

In diesem speziellen Fall kann man glaub ich den StringReplace-Ansatz noch vertreten: ;)
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
// Datei in einen String laden
  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;

// Teil ersetzen
StringReplace(Inhalt,'%PLATZHALTER%','Neuer Wert',[rfIgnoreCase]);
Abspeichern geht fast genauso wie laden, nur eben andersrum. :lol: 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 Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: So 25.05.08 16:04 
Moin!

user profile iconmjoellnir hat folgendes geschrieben:
Der Text zwischen den Platzhaltern muss erstetzt werden und NICHT die Platzhalter
:oops: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: 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.