Hallo Grishnak,
dein Ansatz ist mein Ansatz - ich verwende allerdings LoadFromStream(), leite von einer abstrakten Klasse ab und überlasse den Komponenten die Speicherung, die diese Methode schon selbst mitbringen:
Delphi-Quellcode:
type
TPersistentObject = class
public
procedure LoadFromStream(Stream: TStream); virtual; abstract;
procedure SaveToStream(Stream: TStream); virtual; abstract;
end;
TOHeader = class(TPersistentObject)
public
HDR_TYP : String[20];
No : String;
...
RegistrierNr : TStringList;
...
procedure LoadFromStream(Stream: TStream); override;
procedure SaveToStream(Stream: TStream); override;
end;
implementation
procedure TOHeader.SaveToStream(Stream: TStream);
var
dw: DWORD;
begin
Stream.Write(HDR_TYP[0], Succ(Length(HDR_TYP)));
dw := Length(No);
Stream.Write(dw, SizeOf(dw));
Stream.Write(No[1], Length(No));
...
RegistrierNr.SaveToStream(Stream);
...
end;
Freundliche Grüße vom marabu