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