Action:=caFree;
Form1:=nil;
Form1.free;
具体解释一下这三个的意义,它们有什么区别?还有if not Assigned(Form1) then
和if Form1=nil then这两个方法的意义和区别?

解决方案 »

  1.   

    http://www.cndelphi.com/bbs/dispbbs.asp?boardID=49&ID=469&skin=0
      

  2.   

    比如说在窗体的关闭中使用Action := caFree,就是在关闭窗体的同时将其释放掉;
    Form1:=nil;是将已经分配的Form1对象难置为空;
    Form1.free;是将Form1对象释放掉,一般是先将对象置为空,然后再释放;
    if not Assigned(Form1) then 的意思是在判断内存中是否已经存在了Form1这个对象,常用在防止打开多个实例的程序中;
    if Form1=nil then则是判断如果对象Form1为空,则执行什么程序的意思。
    说的不完全对,还请见谅。
      

  3.   

    Action:=caFree;  是在MDI中用来关闭子窗体。如果没有此语句则关闭时候是最小化子窗体。
      

  4.   

    Action:=caFree;是用在OnClose事件中指定关闭方式的,这里指定释放对象实体,但这样做的结果是不释放对象指针,从而造成一个野指针,所以还需要手动释放,如下:
    Form:=Nil;(这里不可以使用Self)Form:=Nil;这里上将窗体指针进行释放Form.Free;的效果等同与Action:=caFree;这些都和窗体的FormStyle没有关系!在创建动态窗体的时候在关闭被动态的窗体时必须指定将对象和指针同时释放!
      

  5.   

    To FrameSniper
    还有if not Assigned(Form1) then
    和if Form1=nil then这两个方法的意义和区别?
      

  6.   

    默认情况下窗体的close时的action是最小化;用cafree强制使窗体关闭的事件变为释放所占用的内存;
      

  7.   

    >>还有if not Assigned(Form1) then
    >>和if Form1=nil then这两个方法的意义和区别?
    就我所知沒什麼區別, 至少在使用中沒什麼區別!
      

  8.   

    还有if not Assigned(Form1) then
    和if Form1=nil then这两个方法的意义和区别?