我有功能(用 Delphi 7 32 位编写):
函数 GetVMTAddr(var C): 整数;
开始
结果:=整数(C);
尝试
PVmt(结果)^.SelfPtr := PVmt(C)^.SelfPtr;
除了
结果:= 0;
结尾;
结尾;
它返回 VMT 地址(我认为它是 VMT,我不确定)并检查参数是否是一个对象(通过try...except,这是恕我直言的糟糕解决方案)。
我有两个问题:
1)这真的是 VMT 地址还是我错了?
2)有没有更好的解决方案来检查参数是一个对象?