Moin Peter,
das Problem ist, dass Du in Deinem Record ShortStrings verwendest.
Diese beginnen, an Index 0, mit der Länge.
Da Du nicht angibst, ab welchem Index der String gelesen/geschrieben werden soll, wird immer ab Index 0 in die Datei geschrieben, bzw. daraus gelesen.
Da Du ja die Länge immer mitspeicherst, solltest Du "normale" Strings verwenden (Huge Strings):
Beispiel:
Delphi-Quellcode:
// Schreiben
y:=Length(AllTitel[x].Titel);
f.WriteBuffer(y,SizeOf(integer));
f.WriteBuffer(AllTitel[x].Titel[1],y);
// Lesen
f.ReadBuffer(y,SizeOf(integer));
SetLength(AllTitel[x].Titel,y);
f.ReadBuffer(AllTitel[x].Titel[1],y);