Delphi XE ist vorerst nur auf meiner Box verfügbar, ich weiß nicht, ob Delphi 2010/XE2 einige bahnbrechende Änderungen eingeführt hat.TObject virtuelle Signaturen zu aktualisieren, bis Delphi XE2
Bitte helfen Sie mir die folgende Definition zu aktualisieren:
TVmt = packed record
SelfPtr : TClass;
IntfTable : Pointer;
AutoTable : Pointer;
InitTable : PFieldTable;
TypeInfo : PTypeInfo;
FieldTable : Pointer;
MethodTable : Pointer;
DynamicTable : Pointer;
ClassName : PShortString;
InstanceSize : Cardinal;
Parent : PClass;
{$IFDEF DELPHI2009_UP}
Equals : Pointer;
GetHashCode : Pointer;
ToString : Pointer;
{$ENDIF}
{$IFDEF DELPHIXE_UP}
// ???
{$ENDIF}
{$IFDEF DELPHIXE2_UP}
// ???
{$ENDIF}
SafeCallException : PSafeCallException;
AfterConstruction : PAfterConstruction;
BeforeDestruction : PBeforeDestruction;
Dispatch : PDispatch;
DefaultHandler : PDefaultHandler;
NewInstance : PNewInstance;
FreeInstance : PFreeInstance;
Destroy : PDestroy;
{UserDefinedVirtuals: array of procedure;}
end;
Vielen Dank im Voraus.
Die Informationen, die ich brauche kann system.pas aus dem Gerät grabed werden. Während ich es als Delphi XE-Version überprüfe, entdecke ich auch, dass die VMT von der CPU abhängt (Schuld ist mir, es ist offensichtlich/suche nach der {$IF defined(CPUX64)}
Direktive für weitere Details).
Ich interessiere mich für 32-Bit-Windows-Plattform.
Siehe [Internal_Data_Formats] (http://docwiki.embarcadero.com/RADStudio/en/Internal_Data_Formats). Sieht nicht so aus, als ob es irgendwelche Änderungen gäbe. –
@ LU RD: Zeiger-Steckplätze von * Equals/GetHashCode/ToString * sind nicht vorhanden. Sie sollten sich zwischen dem * Zeiger auf einen Zeiger auf die Vorgängerklasse * <=> 'Parent' (Offset -36) und * Zeiger auf den Einstiegspunkt der SafeCallException-Methode * <=>' SafeCallException' (Offset -34) befinden. Es scheint eher eine Delphi 2007 VMT zu sein. – menjaraz
Ja, das sehe ich jetzt. Dokumentation ist nicht immer auf dem neuesten Stand, aber Programmierer müssen sein :) –