Code: Alles auswählen
SL:=TStringList.Create;
SL.Add('Hallo');
SL.SaveToFile(ANiceFileName);
SL.Free;
Beim Lesen hat sich der Inhalt aber leider geändert:
Code: Alles auswählen
SL:=TStringList.Create;
SL.LoadFromFile(ANiceFileName);
IF SL[0]='Hallo' THEN BEGIN END
ELSE BEGIN END;
SL.Free;
Der IF-Vergleich zeigt, dass sich der Text in der ersten Zeile verändert hat: Vor dem "Hallo" stehen unsichtbar die 3 UTF8-BOM-Bytes: EF+BB+BF. (BOM = Byte Order Marker)
Nur weil Length(SL[0]) nicht 5 sondern 8 ergibt, kann man es erkennen.
Wie kann ich die 3 Bytes los werden? Am Besten schon beim Schreiben in die Datei. Nicht jede StringList ist ja eine UTF8-Datei. Warum kommt diese Kodierungsinfo heimlich am Anfang der erste Zeile?
Wahrscheinlich muss ich mir einen eigenen Typ von TStringlist ableiten?
Ich habe schon eine ganze Zeit gegoogelt und hier im Forum Sachen gelesen. Wie ist der aktuelle Stand?
Für jede mögliche Hilfe oder Info danke im Voraus!
Gruß Bernd
Edit: LoadFromFile statt ReadFromFile im 2. Code-Snippet