Hallo!
3 Varianten sind möglich:
1. die zu löschenden Zeilen haben alle denselben Inhalt. Dann sieht das Ganze so aus:
Delphi-Quellcode:
const loeschen = ' .00 .00 -300.00 0';
var tin, tout:Textfile;
lese:String;
begin
AssignFile(tin, 'c:\kai.txt'); // Name der Datei ist kai, lasse sie damit Laden
AssignFile(tout, 'c:\kaineu.txt'); // gebe hier Name und Pfad an, wo das Resultat dann hin soll
Reset(tin);
Rewrite(tout);
while not Eof(tin) do
begin
ReadLn(tin, lese);
if lese <> loeschen then // Vergleich der kompletten Zeile
writeln(tout,lese);
end;
CloseFile(tout);
CloseFile(tin);
end;
Deine Beispieldaten sind ja so aufgebaut.
2. die zu löschenden Zeilen haben unterschiedlichen Inhalt, aber die Spalten sind fest definiert. Dann sieht das Ganze so aus:
Delphi-Quellcode:
const loeschen = '-300.00';
loeschpos=32; // ggf. auszählen!
var tin, tout:Textfile;
lese:String;
begin
AssignFile(tin, 'c:\kai.txt'); // Name der Datei ist kai, lasse sie damit Laden
AssignFile(tout, 'c:\kaineu.txt'); // gebe hier Name und Pfad an, wo das Resultat dann hin soll
Reset(tin);
Rewrite(tout);
while not Eof(tin) do
begin
ReadLn(tin, lese);
if Copy(lese,loeschpos,Length(loeschen)) <> loeschen then // Vergleich der betreffenden Spalten
writeln(tout,lese);
end;
CloseFile(tout);
CloseFile(tin);
end;
3. die zu löschenden Zeilen enthalten das "-300.00" an unterschiedlichen Stellen, aber dieser Wert kommt in den übrigen Zeilen garantiert nicht vor. Dann sieht das Ganze so aus:
Delphi-Quellcode:
const loeschen = '-300.00';
var tin, tout:Textfile;
lese:String;
begin
AssignFile(tin, 'c:\kai.txt'); // Name der Datei ist kai, lasse sie damit Laden
AssignFile(tout, 'c:\kaineu.txt'); // gebe hier Name und Pfad an, wo das Resultat dann hin soll
Reset(tin);
Rewrite(tout);
while not Eof(tin) do
begin
ReadLn(tin, lese);
if Pos(loeschen,lese) <> 0 then // KO-Zeichenfolge suchen
writeln(tout,lese);
end;
CloseFile(tout);
CloseFile(tin);
end;
Sollte keines der Kritereien erfüllt sein, mußt Du eben die Zeile zerlegen und dann den passenden Abschnitt (hier 3. Bereich) vergleichen.
Allerdings gebe ich eines zu bedenken: Auch wenn es sehr ressourcenfressend ist, nach Windows-Norm
muss die komplette Datei in den Speicher. Wozu gibt es das Pagefile - auch wenn das das System ausbremst
Ich bevorzuge allerdings auch die klassische Methode mit zeilenweiser Verarbeitung.
Gruß
Dietmar Brüggendiek