TClass 与Pointer匹配吗?深入理解对象及类引用的问题(100分)

  • 主题发起人 主题发起人 cqxiangyi
  • 开始时间 开始时间
C

cqxiangyi

Unregistered / Unconfirmed
GUEST, unregistred user!
TClass 与Pointer匹配吗?

function TObject.classType:TClass;
begin
Pointer(Result):= PPointer(self)^;
end;
返回值是TClass
PPointer(self)^到底是什么东东?
TClass 内部含义到底是什么东东 ?
 
PPointer: 指向指针的指针。
这里的self是指向TObject实例的指针,可以理解为一个TObject对象变量,delphi中对象实例实际是个record,这个record最初4字节是指向类VMT表(可以认为就是TClass)的指针。
 
同意楼上,我觉得基本解释清楚了
 
应该是这样的,比如把self强制转换为整数,itmp := Integer(self),然后在用到的地方再转换回来TClass(itmp),都是可以的,这样我们就可以用控件的tag属性记录关联的控件的地址,需要时再转换回来,很方便的。其原理应该就是保存了对象的地址。
 
控件的tag还有这个功能:)今天才了解
希望boldfake能发一段示例
 
edit.tag := Integer(query);

然后用的时候这样取

with TQuery(edit.tag) do
begin
...
end;
就ok了
 
后退
顶部