*****如何判断Pointer是否为TObject*****

snowfog 2003-03-12 07:48:30
var
a: Pointer;
begin
a := TObject.Create;
//如何判断a是否为TObject?
end;
...全文
94 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ehom 2003-03-12
  • 打赏
  • 举报
回复
单纯判断无类型指针可以用

try
if (TObject(a) is TObject) then
...
except
//
end;
ehom 2003-03-12
  • 打赏
  • 举报
回复
另外我确信我看清楚了你的问题,我前面的回答正是针对你的问题
ehom 2003-03-12
  • 打赏
  • 举报
回复
那这就不用判断了,TObject是所有类引用的祖先
Eastunfail 2003-03-12
  • 打赏
  • 举报
回复
function IsObject(p:pointer):boolean;
var tmp:TObject;
begin
Result:=true;
try
tmp:=p as TObject;
except
Result:=False;
end;
end;
copy_paste 2003-03-12
  • 打赏
  • 举报
回复
TObject.InheritedFrom(...)
snowfog 2003-03-12
  • 打赏
  • 举报
回复
但我就是要判断a是否为TObject的子类,怎么办?看清我的问题先
ehom 2003-03-12
  • 打赏
  • 举报
回复
那这时就是

if TObject(a).ClassType=TControl then

举一反三嘛
copy_paste 2003-03-12
  • 打赏
  • 举报
回复
关于“如何检测指针是否是对象”的深入探讨

http://aiming.ynxx.com/files/PtrIsObj.v.1.1.zip

http://www.delphibbs.com/delphibbs/dispq.asp?lid=1642063
snowfog 2003-03-12
  • 打赏
  • 举报
回复
如果改为
a := TControl.Create(nil);
if a.ClassType = TObject then
begin//无法判断其是否为TObject的子类?

end;
ehom 2003-03-12
  • 打赏
  • 举报
回复
if TObject(a).ClassType=TObject then

5,928

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧