当分の間、Delphi XE は私のボックスでのみ利用できます。Delphi 2010/XE2 が破壊的な変更を導入したかどうかはわかりません。
次の定義を更新するのを手伝ってください:
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;
前もって感謝します。
必要な情報は、ユニットsystem.pasから取得できます。Delphi XEバージョンとしてチェックしている間、VMTがCPUに依存していることも発見しました(私のせいです、それは明らかです/詳細については{$IF defined(CPUX64)}
ディレクティブを検索してください)。
32 ビット Windows プラットフォームに興味があります。