![]() |
Zeile aus Datei in Textdatei schreiben
Hallo!
Ich habe eine Batch Datei, die mit Delphi aufgerufen wird. Nun möchte ich jedoch den Code durch Delphi eigene Mittel ersetzen. Wie kann ich eine Zeile aus einer Textdatei suchen und diese Zeile in eine andere Textdatei (kann auch eine .ini sein) einfügen? Mit batch sah das ganze so aus: FIND /N /I "name" personen.txt >> namen.txt Mfg Xenonz |
Re: Zeile aus Datei in Textdatei schreiben
Ich würde mir die Datei in eine StringList laden und dann die einzelnen Zeilen durchgehen, bis du die Zeile gefunden hast.
Delphi-Quellcode:
Hier fehlt jetzt die Fehlerüberprüfung. Und außerdem ist das eine Resourcen/Rechenzeit-Verschwendung wenn du viele Sachen aus der Datei finden wills. Aber in etwa so, sollte es gehen.
procedure FindInFile(SrcFile : String; DestFile : String; TextToFind : String);
var sl_Src, sl_Dest : TStrings; idx : Word; begin sl_Src:=TStringList.Create; sl_Dest:=TStringList.Create try sl_Src.LoadFromFile(SrcFile); //sl_Dest.LoadFromFile(DestFile) //Wenn an die alte Datei angehangen werden soll for idx:=0 to sl_Src.Count-1 do begin //Jetzt kommts drauf an, wie du suchen willst: if (AnsiContainsStr(sl_Src[idx],TextToFind)) then //case-sensitiv //if (AnsiContainsText(sl_Src[idx],TextToFind)) then //nicht case-sensitiv sl_Dest.Add(sl_Src[idx]); end; finally sl_Src.Free; sl_Dest.Free; end; end; |
Re: Zeile aus Datei in Textdatei schreiben
ich würde die Datei Zeile für Zeile einlesen und dann schauen, ob die gelesene Zeile passt.
somit musst du nicht erst die ganze Datei einlesen.
Delphi-Quellcode:
var F: TextFile; S: string; begin AssignFile(F, FileName); Reset(F); repeat Readln(F, S); { Erste Zeile der Datei lesen } until S = gesuchteZeile; CloseFile(F); end; |
Re: Zeile aus Datei in Textdatei schreiben
Danke schon einmal für die Antworten!
Also im Moment sieht das ganze wie folgt aus:
Delphi-Quellcode:
Dabei spuckt der Compiler jedoch einen Fehler aus: ElnOutError .
var
F,D: TextFile; S: string; begin AssignFile(F, 'test.txt'); Reset(F); repeat Readln(F, S); until S = 'haha'; CloseFile(F); AssignFile(D, 'neu.txt'); Reset(D); writeln(D, S); CloseFile(D); end; Ein weiteres Problem war, dass in dieser Zeile auch noch andere Zeichen vorkommen dürfen als nur 'haha'. Wie kann man also anstatt S = 'haha' überprüfen ob haha in s vorhanden ist? Mfg Xenonz |
Re: Zeile aus Datei in Textdatei schreiben
Zitat:
schau mal in der Delphi-Hilfe nach. |
Re: Zeile aus Datei in Textdatei schreiben
Danke!
Also dieses Problem ist nun gelöst mit:
Delphi-Quellcode:
Nun noch das schreiben in eine Datei. Wieso treten bei mir diese Fehler auf?
until (pos('haha',S) > 0);
|
Re: Zeile aus Datei in Textdatei schreiben
Soo!
Ich habe gerade bemerkt, dass Reset nicht zum schreiben öffnet! So sieht nun das ganze fertig aus:
Delphi-Quellcode:
Danke für die Hilfe!
var
F, D : TextFile; S: string; begin AssignFile(F, 'test.txt'); Reset(F); repeat Readln(F, S); until (pos('haha',S) > 0); CloseFile(F); AssignFile(D, 'neu.txt'); append(D); writeln(D, S); CloseFile(D); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:48 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz