Bei der StringListe aufpassen, dass es nicht knallt, sollte die Datei leer sein und einfach so ohne Prüfung auf Count-1 zugegriffen werden,
bzw. das letzte Char, wenn es nichts in der Zeile gibt.
PS: TStringList hängt beim Speichern einen Zeilenumbruch hinter jede Zeile, selbst wenn es beim Einlesen hinter der letzten Zeile keinen Zeilenumbruch gab.
CreateFile, SetFilePointer, ReadFile,
SetEndOfFile, CloseHandle
oder
Delphi-Quellcode:
S := TFileStream.Create(...);
//S.Position := S.Size - 1;
//if AnsiChar(S.Read(..., 1)) = ',' then
S.Size := S.Size - 1;
S.Free;
CreateFile/TFileStream knallt nichts, außer du willst es.
Ein Read/SetPosition hinter das Ende wird auf das Ende zurückgesetzt, bzw. stoppt dort.
Einige Read-Methoden (die ohne Result), werfen eine
Exception, wenn sie nicht genug lesen/schreiben konnten und die mit Result sagen dir wieviel sie wirklich gemacht hatten (wenn du nicht vergisst die Results auszuwerten).
Read/Write vs. ReadBuffer/WriteBuffer