Delphi-Quellcode:
// Array schreiben
FileStream.Write(FTermine, SizeOf(FTermine));
Hallo Viktorii, die Dynamische Struct kannst du nicht als ganzes speichern.
Alles durchiterieren und Size merken, oder maskieren und abspeichern.
Tip, verwende wenn möglich keinen Dynamischen Speicher, dh, statt strings Array [0..256] of Char, usw.
Hilft, da du dann alles im Memory laden und in einem Rutsch kopieren kannst.
Bei records packed nicht vergessen.
Delphi-Quellcode:
type
TTermine = packed record
Name : array [0..255] of Char;
Zeit : TTime;
end;
TPerson = class(TObject)
public
FVorname : array [0..255] of Char;
FNachname : array [0..255] of Char;
FBild : TImage;
FTermine : array of TTermine;
end;
//-- Abspeichern
..
var
ms, PicStream: TMemoryStream;
s, ss: string;
Person: TPerson;
cbPicStreamSize: integer;
i: integer;
begin
ms := TMemoryStream.Create;
ms.Seek(0, SizeOf(integer));
Person.FBild.Picture.Bitmap.SaveToStream(ms);
cbPicStreamSize := ms.Size - SizeOf(integer);
ms.Seek(0, 0);
ms.Write(cbPicStreamSize, SizeOf(integer));
ms.Seek(0, ms.size);
ms.Write(Person.FVorname, 256);
ms.Write(Person.FNachname, 256);
for i:= 0 to Length(Person.FTermine) - 1 do
ms.Write(Person.FTermine[i], SizeOf(TTermine));
ms.savetofile('c:\out.dat');
end;
lg. Astat