关于Assigned的问题(30分)

  • 主题发起人 主题发起人 zgh777
  • 开始时间 开始时间
Z

zgh777

Unregistered / Unconfirmed
GUEST, unregistred user!
Application.CreateForm(TForm1, Form1);
Form1.ShowModal;
Form1.Free;
执行完上面的代码后,判断Assigned(Form1)为真,这是怎么回事?
Form1已经Free了,Assigned(Form1)应该为假吧
 
FreeAndNil(Form1);之后Assigned(Form1)才会为假
 
Application.CreateForm(TForm1, Form1);
Form1.ShowModal;
FreeAndNil(Form1);
这样写可不可以?
 
应该可以,不行分开写,FORM1.FREE;FORM1:= NIL;
 
看来你没完全明白Assigned的意思。
它是判断括号中的变量是不是有指向,如果有,则返回真。
 
我试过
Application.CreateForm(TForm1, Form1);
Form1.ShowModal;
FreeAndNil(Form1);
这样不行。
到底应该怎样判断Form1已经释放了呢?
 
Application.CreateForm(TForm1, Form1);
Form1.ShowModal;
Form1.Free;
Form1 := nil;
也不行啊
 
有没有人知道啊
 
destroy ? ???????
 
到底应该怎样判断Form1已经释放了呢?
----if Form1=nil then
由于你的Form1是个全局变量,在释放完后,delphi在VMT表中依然存在指向。所以不能用Assigned来判断。
而Assigned一般用于查询实现接口的对象,当然也可以查询私有对象。

我记得以前有个帖子讨论过“FreeAndNil”这个主题的。
 
多人接受答案了。
 
后退
顶部