Ich habe eine Datei .\input.txt
wie diese:
aaa
bbb
ccc
Wenn ich es mit lese TStrings.LoadFromFile
und zurückschreibe (auch ohne Änderungen vorzunehmen) TStrings.SaveToFile
, wird am Ende der Ausgabedatei eine leere Zeile erstellt.
var
Lines : TStrings;
begin
Lines := TStringList.Create;
try
Lines.LoadFromFile('.\input.txt');
//...
Lines.SaveToFile('.\output.txt');
finally
Lines.Free;
end;
end;
Das gleiche Verhalten kann mit der TStrings.Text
Eigenschaft beobachtet werden, die eine Zeichenfolge zurückgibt, die am Ende eine leere Zeile enthält.
\n
Zeichen endet und die Funktion das \n
der Datei hinzufügt ? Oder fügt die Funktion buchstäblich ein \n
Recht nach einem \n
am Ende der Datei vorhandenen hinzu? Für POSIX müssen Textdateien alle Zeilen mit einem \n
, nur zu Ihrer Information, abgeschlossen haben. Es wurde viel Software geschrieben, um einigen Standards zu entsprechen. Aus diesem Grund fügen viele Redakteure die fehlende Terminierung hinzu, \n
wenn Sie Dateien standardmäßig speichern (z. B. vim
IDEs usw. machen Ihre Dateien standardmäßig POSIX-konform.)