![]() |
Zeilenweise in Datei Schreiben
Hallo Zusammen,
ich möchte in einer Datei die ersten beiden Zeilen mit bestimmten Strings überschreiben. Ich dachte, das geht so:
Delphi-Quellcode:
aber er hängt die Strings einfach hinten an die Datei an. Wie genau überschreibe ich eine Zeile?!
assignfile(f,filename);
reset(f); append(f); for i := 0 to 1 DO begin writeln(f,neueStrings[i]); end; closefile(f); gruß Evian |
Re: Zeilenweise in Datei Schreiben
Append; setzt die Einfügemarke automatisch ans Ende der Datei. Tu das raus.
|
Re: Zeilenweise in Datei Schreiben
mh.. das ist mir echt peinlich, aber ich habe seid der Schule nicht mehr Zeileweise gelsen und geschrieben, mit den Methoden von den einzelnen Listen in Delphi war mir der Zugriff immer lieber, da so schön einfach. Diesmal sind die Dateien zu groß um sie komplett mit readfromfile() zu laden.
Tscha und was soll ich sagen, wenn ich append weg lasse, bekomme ich einen E/A-Fehler 105. Edit: ich schätze ich muss die Einfüge marke dann selber setzen, aber finde hier im Forum nicht wie.. *g* |
Re: Zeilenweise in Datei Schreiben
Hmmm... Seltsam... Ich habe Append noch nie gebraucht. Was genau ist denn ein E/A 105?
EDIT: Was ist dir peinlich? Das ein Totalnewb deine Frage beantwortet hat? |
Re: Zeilenweise in Datei Schreiben
Zitat:
der Fehler sagt follgendes: "Datei wurde nicht für Ausgabe geöffnet" -> Wird von Write oder Writeln für eine Textdatei gemeldet, wenn keine Konsolenanwendung generiert wird. ich schätze, ich muss die Einfüge marke noch auf die erste Zeile setzen, aber wie?! |
Re: Zeilenweise in Datei Schreiben
Zitat:
Zitat:
Zitat:
Delphi-Quellcode:
AssignFile(f,filename);
{$I-} Reset(f); if IOResult = 0 then begin for i := 0 to 1 DO begin WriteLn(f,neueStrings[i]); end; CloseFile(f); end else ShowMessage(SysErrorMessage(GetLastError)); {$I+} |
Re: Zeilenweise in Datei Schreiben
mh.. also ich lese erst die ersten beiden ZEilen aus, schreibe sie dann in ein Memo und schreibe sie dann wieder Rückwerts ind die Datei. Also zumindest habe ich das vor :).
Bei Deinem Code gibt es im ersten durchlauf keinen Fehler, aber es wird auch nicht in die Datei geschrieben... wenn ich direkt noch mal lesen will gibt es wieder den E/A-Fehler: hier mal der Testcode:
Delphi-Quellcode:
function reverse(s : STRING): STRING;
VAR i : Integer; BEGIN for i := length(s) Downto 0 do BEGIN result := result + s[i]; END; END; function getdata(filename:string):TStrings; var f:text; s:string; i:integer; begin result:=TStringList.create; assignfile(f,filename); reset(f); for i := 0 to 1 DO begin readln(f,s); result.add(s); end; closefile(f); end; procedure setData(filename:string); var f:text; s:string; i:integer; begin AssignFile(f,filename); {$I-} Reset(f); if IOResult = 0 then begin for i := 0 to 1 DO begin WriteLn(f,reverse(Form1.memo1.lines[i])); end; CloseFile(f); end else ShowMessage(SysErrorMessage(GetLastError)); {$I+} end; procedure TForm1.Button1Click(Sender: TObject); BEGIN Memo1.Lines.AddStrings(getdata('c:/TCPCheckResult.txt')); setData('c:/TCPCheckResult.txt'); END; |
Re: Zeilenweise in Datei Schreiben
ok, wenn man in einer Datei Daten Überschreiben will, dann muss man rewrite(); nutzen..., aber dann wird die Datei auch komplett neu geschrieben. ISt es nicht möglich einfach nur bestimmte Zeilen einer Datei zu überschreiben?!
|
Re: Zeilenweise in Datei Schreiben
Aber dass der PathSeparator unter Windows eigentlich der BackSlash ist weißt du?
|
Re: Zeilenweise in Datei Schreiben
Zitat:
Also ich wusste es nicht und ich gebe zu, dass ich in dem Bereich noch weniger Ahnung habe, als ich ohne hin schon dachte, aber ganz ehrlich ich habe keine Ahnung, wie mir diese Information hier weiter helfen soll. Könntest Du das bitte erläutern. Gruß Evian EDIT: Ok ´jetzt hab ich erst gerafft, was Du meinst. Entschuldige manchmal sieht man den Wald vor lauter Bäumen nicht. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:44 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