Delphi-Quellcode:
TYPE
PStreamRec = ^TStreamRec;
{ Stream record ptr }
TStreamRec =
Packed RECORD
ObjType: Sw_Word;
{ Object type id }
VmtLink: Pointer;
{ VMT link }
Load : Pointer;
{ Object load code }
Store: Pointer;
{ Object store code }
Next : PStreamRec;
{ Next stream record }
END;
Im Quellcode hatte man dann typisierte Konstanten definiert, die es möglich gemacht haben, die einzelnen Streams für die spätere Verwendung zu registrieren, was bei diesem Streamtyp zwingend erforderlich war, damit die Objekte später in den Stream geschrieben werden konnten.
Delphi-Quellcode:
CONST
RCollection: TStreamRec = (
ObjType: 50;
VmtLink: Ofs(TypeOf(TCollection)^);
Load: @TCollection.Load;
Store: @TCollection.Store;
Next: Nil);
Nun funktionieren ja die Streamklassen von heute doch etwas anders und nirgendwo ist da so eine Registirierung nötig, wie das damals noch der Fall war.
Wie kann ich nun mit geringstmöglichem Aufwand diese Streams anpassen?
Delphi scheint die Funktion
TypeOf nicht zu kennen und die Funktion
Ofs gibt es wegen des heutigen Flat Speichermodells auch nicht mehr.
Ich würde am liebsten doch erst mal die Zuweisung an die Felder des TStreamRec ausführen, damit ich nicht die Streamlogik komplett umkrempeln muss. Ich beuntze die alte Objects
Unit aus Freepascal Version 3.0.0. Gibt es da eine Chance?
Wie kriege ich da die TStreamRec Werte korrekt belegt. Die Zuweisung an VmtLink ist so, wie oben zu sehen, in Delphi nicht mehr gültig;