怎样判断一个对象是否已经Free?(50分)

  • 主题发起人 主题发起人 xself
  • 开始时间 开始时间
X

xself

Unregistered / Unconfirmed
GUEST, unregistred user!
当一个对象创建前是Nil,当创建后就不再是Nil,但Free后还是不是Nil,那怎样才能判断一个对象是否已经Free了?
 
如果用aObj.Free的话,那么aObj不是Nil;
建议用FreeAndNil(aObj);这样的话aObj就是Nil了,然后可以用Assigned函数判断
 
跟楼上的学了一招
 
我就奇怪干吗判断是否free,FreeAndNIl就可以得到你的目的,以后就判断 是否 nil就可以了。
 
或者aobj.Free
aobj:=nil;
这比较喜欢这样!!
 
if aobj<>nil then FreeAndNil(aobj)
 
rcllb说道不错:
如果用aObj.Free的话,那么aObj不是Nil;
建议用FreeAndNil(aObj);这样的话aObj就是Nil了,然后可以用Assigned函数判断

我补充一点:
如果是下面的语句创建的对象不需要freeandnil
with TCustomObject.Create(self) do
try
...
finally
free;
end;

用Assigned这样判断:
if not Assigned(myobject) then myobject:=Tmyobject.create(self);
 
类似的问题请高手看看!
http://www.delphibbs.com/delphibbs/dispq.asp?LID=2545406
 
你可在释放对像时这么写:
if 对像<>nil then
begin
对像.free;
对像:=nil;
end;
这样就保证每次对像释放后就是nil.
 
接受答案了.
 
后退
顶部