Hallo,
in dieser Zeile in Dein Fehler
Stream.Write(Items[i].Caption, SizeOf(Items[i].Caption));
Caption ist ein String. Einen String kann man nicht so einfach in einen Stream schreiben.
Du könntest dafür die beiden Methoden nutzen:
Delphi-Quellcode:
procedure WriteStringToStream(Stream : TStream; aStr : String);
var
aStrLen : Integer;
begin
aStrLen:=Length(aStr); // Länge des Strings merken
Stream.WriteBuffer(aStrLen,SizeOf(Integer)); // Länge des Strings in den Stream schreiben
Stream.WriteBuffer(Pointer(aStr)^,aStrLen); // Den eigentlichen String in den Stream schreiben
end;
function ReadStringFromStream(Stream : TStream): String;
var
aStrLen : Integer;
begin
Stream.ReadBuffer(aStrLen,SizeOf(Integer)); // String länge aus Stream lesen
SetLength(Result,aStrLen); // Result auf die passende Länge setzen
Stream.ReadBuffer(Pointer(Result)^,aStrLen); // String aus Stream in Result einlesen
end;