TObject virtual methods' signatures to update till Delphi XE2

364 views Asked by At

For the time being, Delphi XE is only available on my box, I don't know wether Delphi 2010/XE2 has introduced some breaking changes.

Please help me to update the following definition:

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;

Thanks in advance.


The information I need can be grabed from the unit system.pas. While I check it as Delphi XE version, I discover also that the VMT depend on the CPU (Blame it on me, it obvious / search for the {$IF defined(CPUX64)} directive for further details).

I'm interested in 32 bits Windows platform.

1

There are 1 answers

0
Ken White On BEST ANSWER

A quick review of XE2's System.pas doesn't show any differences in the ordering and content of the VMT. There's an {$IFDEF CPUX64} for different offsets for the vmt* values, but the order and types seem to be the same. There's definitely nothing new in the areas you have marked with ???