比如我定义了一个类TclassA,相关的对象ClassA,在应用ClassA以前必须创建之,
即: 
    ClassA:=TClassA.Create;
    但现在我要知道是否进行了上述的操作,怎么实现?
    谢谢,在线等候。

解决方案 »

  1.   

    if ClassA <> nil then .........
      

  2.   

    楼上的方法可以不过我建议你用Delphi提供的函数来判断,这样if Assigned(ClassA) then  //如果ClassA不等于Nil,则Assigned返回真,否则为假
      ShowMessage('已经创建')
    else
      ShowMessage('还没有创建');另外,这个函数只上判断对象指针中是否包含了具体的内容!
      

  3.   

    if not Assigned(ClassA) then ClassA := TClassA.Create;
      

  4.   

    对象就是指针!
    if AObject<>nil then .....//AObject已经创建了
      

  5.   

    methods都不错。最同意用ASSIGNED函数
      

  6.   

    if AObject<>nil 这种方法是不行的因为 AObject.free以后,Aobject还不是nil
      

  7.   

    严重同意 brokenbird(brokenbird),因为对全局对象而言,如果你在第一次释放的时候没有同时将对象置为NIL,第二次判断时就会失效,这个对象指针将指向一个已经被释放的内存空间。
      

  8.   

    在初始化时设置为空,在释放后设置为空。用ylmg(ylmg) ( ) 的方法
     
      if ClassA <> nil then .........
      
     
      

  9.   

    我今天也问了同样的问题,我自己试了一下,结果:
    如果直接用Assigned函数,Aobject一旦被创建,Assigned(Aobject):=True,无论是否
    Aobject.free
    而用if Aobject <> nil then .........,在Aobject.free后要设置为nil
    看你的用法了,我的程序会动态Aobject.free,我用了后者,等于判断Aobject的状态。
      

  10.   

    assigned应该是检测程序中存在不存在这个对象
    Aobject <> nil 直接判断对象的指针
      

  11.   

    To 楼上各位  使用直接和Nil进行比较的唯一弊端就是自己要保证在每次释放对象后将对象指针清空,如果没有这个操作,得到的结果会发生错误,从而导致引用已经不存在的对象  不过,如果你的对象在创建的时候指定了Parent,那么个人认为在释放这个对象后没有必要再为其对应指针做清空处理,因为Parent已经做了这个事情!!!!
      

  12.   

    如果对象是PAS里的全局变量或者是一个类的成员,开始的时候是nil的,如果是在一个函数里定义的,那么开始的时候是个任意值。
    如果想用assigned进行判断,那么这个类释放的时候要object:=nil;或者直接用Freeandnil()释放并且赋值为nil
      

  13.   

    delphi代码怎么这样写?
    明明是对象要写成ClassA,为什么?ObjectA不失更好吗?
    不好意思,初学
      

  14.   

    无论怎样都要在 FREE 后使对象指针为空的,否则它就不对头:)
      

  15.   

    其实Assigned是一个magic函数,实际上
    if not Assigned(ClassA) then ...

    if ClassA <> nil then ...
    是完全一样的,之所以有这个Assigned函数,主要是用在一些不方便直接使用
    if ... <> nil then
    的形式的情况下,例如
    if OnClick <> nil then ...
    这种形式会导致编译器误以为你要调用OnClick,
    这时候使用Assigned就比较方便
      

  16.   

    搞错了if not Assigned(ClassA) then ...

    if ClassA = nil then ...
    是完全一样的,之所以有这个Assigned函数,主要是用在一些不方便直接使用
    if ... = nil then
    的形式的情况下,例如
    if OnClick = nil then ...
    这种形式会导致编译器误以为你要调用OnClick,
    这时候使用Assigned就比较方便