gpt4 book ai didi

windows - TObject 虚拟方法的签名更新到 Delphi XE2

转载 作者:可可西里 更新时间:2023-11-01 09:25:47 25 4
gpt4 key购买 nike

目前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 平台感兴趣。

最佳答案

快速查看 XE2 的 System.pas 并没有发现 VMT 的顺序和内容有任何差异。 {$IFDEF CPUX64} 用于 vmt* 值的不同偏移量,但顺序和类型似乎相同。您标有???的区域绝对没有新内容

关于windows - TObject 虚拟方法的签名更新到 Delphi XE2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10159982/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com