Подписи виртуальных методов TObject для обновления до Delphi XE2
В настоящее время 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 зависят от процессора (вините меня, это очевидно / ищите {$IF defined(CPUX64)}
директива для более подробной информации).
Я заинтересован в 32-битной платформе Windows.
1 ответ
Краткий обзор XE2 System.pas
не показывает никаких различий в порядке и содержании VMT. Там есть {$IFDEF CPUX64}
для разных смещений для vmt*
значения, но порядок и типы кажутся одинаковыми. Определенно нет ничего нового в областях, которые вы отметили???