Forum: Object-Pascal / Delphi-Language
Delphi
by Apollonius,
25. Sep 2007
Wenn man Assembler kann, dann sieht man in der automatisch aufgerufenen Routine FinalizeRecord sehr deutlich den Aufbau. Hier meine Umsetzung:
type
TFinalField = packed record
Typ: PPTypeInfo; //Beachte den Zeiger auf den Zeiger!
Offset: integer;
end;
TRecordTypeData = packed record
RecSize: integer;
Forum: Object-Pascal / Delphi-Language
Delphi
by Apollonius,
25. Sep 2007
Der Grund ist, das referenzgezählte Typen aufgeräumt werden müssen. Beispiel: Ich habe eine lokale Variable als Record deklariert, der ein IInterface-Feld besitzt. Wenn ich diesem Feld etwas zuweise, greift die Referenzzählung. Wenn ich die Routine verlasse, muss der Referenzzähler dekrementiert werden. Dies wird erledigt, indem auf die Typinformation zugegriffen wird. Wenn jedoch kein Feld,...