我想知道以下是否可能,如果可以,怎么办?请代码示例。
- 如何储存一个指向对象方法的指针 as an 整数值?
- 如何将该整数值转换回“方法指针”以及call it?
我想要做的是将“方法指针”存储在 TComponent 派生对象的整数标记值中,然后稍后调用存储的方法。您可以假设所有满足的方法都具有相同的定义。
Thanks!
不,这是不可能的。对象的方法相当于 TMethod:
TMethod = record
Code, Data: Pointer;
end;
The Code
字段是方法的地址,并且Data
字段是隐藏的Self
传递到每个对象方法中的参数。该记录的大小与 Int64 相同,因此如果将其转换为普通 Integer,您将丢失一半。
您可以使用 GetMem 在堆上分配 TMethod 记录,然后将其地址存储在 Tag 属性中,只要您记得在使用完它后释放它即可。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)