Zitat:
Code:
Strom.Read(MyMemos,sizeof(TMyMemos));
So leicht kann man keine TStringList lesen geschweigedenn schreiben.
Das was du mit dieser Codezeile machst, ist die Zeiger auf die die Felder von MyMemos zeigen einzulesen (3 * 4 Bytes). Und diese zeigen irgendwo hin, weshalb eine Schutzverletzung auftritt.
Um mehrere StringListen in einen Stream zu schreiben und zu lesen kannst du so vorgehen:
Code:
procedure WriteStringsToStream(Stream: TStream; List: TStrings);
var
S: string;
Len: Integer;
begin
S := List.Text;
Len := Length(S);
Stream.Write(Len, SizeOf(Len));
if Len > 0 then Stream.Write(S[1], Len);
end;
procedure ReadStringsFromStream(Stream: TStream; List: TStrings);
var
S: string;
Len: Integer;
begin
Stream.Read(Len, SizeOf(Len));
SetLength(S, Len);
if Len > 0 then Stream.Read(S[1], Len);
List.Text := S;
end;