var
  a: Pointer;
begin
  a := TObject.Create;
  //如何判断a是否为TObject?
end;

解决方案 »

  1.   

    if TObject(a).ClassType=TObject then
      

  2.   

    如果改为
      a := TControl.Create(nil);
      if a.ClassType = TObject then
      begin//无法判断其是否为TObject的子类?  end;
      

  3.   

    关于“如何检测指针是否是对象”的深入探讨http://aiming.ynxx.com/files/PtrIsObj.v.1.1.ziphttp://www.delphibbs.com/delphibbs/dispq.asp?lid=1642063
      

  4.   

    那这时就是if TObject(a).ClassType=TControl then举一反三嘛
      

  5.   

    但我就是要判断a是否为TObject的子类,怎么办?看清我的问题先
      

  6.   

    function IsObject(p:pointer):boolean;
    var tmp:TObject;
    begin
    Result:=true;
    try
      tmp:=p as TObject;
    except
      Result:=False;
    end;
    end;
      

  7.   

    那这就不用判断了,TObject是所有类引用的祖先
      

  8.   

    单纯判断无类型指针可以用try
      if (TObject(a) is TObject) then
    ...
    except
      //
    end;