Thema: Delphi TFileStream

Einzelnen Beitrag anzeigen

jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#3
  Alt 27. Jul 2002, 16:22
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;
  Mit Zitat antworten Zitat