如何判断一个控件已经被free了?(100分)

  • 主题发起人 meckyhan
  • 开始时间
M

meckyhan

Unregistered / Unconfirmed
GUEST, unregistred user!
就是 if 控件名=nil 啊。
 
if assigned(...)
 
不一定,控件Free(只是释放内存)以后,
必须手工的 控件 := nil,否则当前控件还是指向以前的地址,
 
释放时:
控件.free
控件 := nil

FreeAndNil(控件)

用Assigned判断
 
if assigned(form1) then
begin
form1.release;
form1 := nil;
end;
 
影 子
说的好!
 
其实assigned(...)不太安全 和 准确 ,自己编一个函数,
 
if not assigned(xxx) then
 
if not Assigned(控件名) then something
或者
if 控件名=nil then something
 
nil 对于子窗体就不起任何作用的,
如果现在不知道,将来迟早会知道的
 
我也遇到这类问题,我用一个历史数据组保存打开过的窗口,也就是说有两个窗口变量指向同一个窗口,我用一个变量的方法释放了窗口,这时我如何在使用另一个变量时判断窗口是否已释放呢,用nil是不行的,对assigned我还没试呢。
 
if not Assigned(控件名) then
showmessage('控件已释放!')
else
showmessage('控件未释放!')
 
释放时:
控件.free
控件 := nil

FreeAndNil(控件)

用Assigned判断
------------------------------------
我一直用此方法
 
顶部