with tform2.Create(nil) do
 try
  showmodal;
 finally
  free;
 end;我一般用
if form1=nil then 
form1:=TForm.Create(self)前种方法中的nil是什么意思,前种方法和我的方法那一个更好呀??感谢答疑解惑

解决方案 »

  1.   

    自己释放写nil就可以了..
    Create(AOwner:TComponent);
    AOwner就是它的所有者..所有者释放时也会释放该组件..
    如果为nil,就需要手动释放该组件了.
    至于怎么用.你自己权衡就可以了..
      

  2.   

    传nil说明需要自己管理你form的释放不传nil说明不用自己释放form,你form的所有者会帮你释放个人倾向与自己释放的方式。
      

  3.   

    释放是不是在form.close时进行的啊?
      

  4.   

    with tform2.Create(nil) do
     try
      showmodal;
     finally
      free;
     end;-----------
    TForm2进行实例化的时候没有指定他的属主。
    因为是ShowModal的窗体,所以
    用With do 引起来,在Finally后手动释放
    如果 form1:=TForm.Create(self)
    表示 Form1的属主是你这个Self 当Self释放的时候 Form1也被释放了
    //
    详细资料参看刘艺《Delphi面向对象编成思想》
      

  5.   

    首先,nil是空指针;其次控件的默认构造函数是Create(AOwner: TComponent),AOwner是要创建控件的拥有者,即控件创建后会加入到AOwner的控件列表中,此时控件的生存期可以交给AOwner控制,在AOwner释放时,会将它的控件列表中的所有控件释放,如果这时你自己维护控件的生存期,在AOwner释放之前,将控件释放了,会导致AOwner在释放控件时导致异常,只不过它自己吞掉了,而且影响效率。如果指定AOwner为nil,那么就是说控件的生存期没有东西可以帮你维护,你只能自己去维护。