Für mich sieht es so aus, das die Breaks der ini Datei zwar übergeben wurden (in dieser waren Zeilenumbrüche) aber beim wieder einlesen alles als String übergeben wurde, auch die eigentlichen Steuerzeichen.
Die INI-
API geht nunmal davon aus, daß der Programmierer es richtig macht und prüft nicht auf ungültige Zeichen, weswegen man eben auch "ungültige" Zeilenumbrüche rein bekommt.
Aber beim Auslesen weiß die
API nunmal nicht, daß dort falsche Zeilenumbrüche drin vorkommen und liest die Werte bis zum ersten Zeilenumbruch.
Genauso ist es Problemlos möglich eine #0 in einen String reinzumachen, aber bei Übergabe als PChar (z.B. an ein Label oder Memo) ist dort eben Schluß, da #0 eben das Ende angibt.
Oder nimm dir eine TStringList, schreib dort in einen Value einen mehrzeiligen Text ... das funktioniert dort sogar, solange man nicht über .Text zugreift oder den Inhalt in eine Datei speichert und voallem wieder aussliest.
Delphi-Quellcode:
SL.Add('123' + sLineBreak + '456');
//SL.Count = 1
SL.Text := SL.Text;
//SL.Count = 2