动态创建的控件是不是一定要用
Try  
  Create(Nil)  
Except
  Free;
end;
是Create(Nil)的,而不是Create(Form1)
我常用的是
Create(Nil)  
Free;
而没有用Try
而公司的其他人都用Try
如果创建多个的话,就要用很多个Try...Except...end
如果在每个try之前都空两格,这样代码看起来又长又难看
有没有比较好的方法,就是在这个程序关闭的时候同时关闭所有动态创建的东西
不要跟我说什么Create(Form1),等窗体关闭的时候,让窗体自动释放
我是在Unit里面的(没有Form)

解决方案 »

  1.   


    Create(Nil)  
    Try  
      //操作
    Except
      Free;
    end;
    程序关闭的时自动释放所有内存另外Create(Form1)在有窗体的单元里也不是好方法
    而应是Create(self)
      

  2.   

    to  楼上
    我的问题是
    能不能不用Try
    然后在程序关闭的时候自动把我们在程序里面动态创建的,没有释放的东西释放调
      

  3.   

    我记得try不是在程序关闭的时候才释放内存,而是在操作完成后即释放内存吧。而且使用try是为了有效处理程序运行中的异常,如果不用try,则发生了异常就不能free了,使用try就是保证发生了异常也能够free。
      

  4.   

    Create(Nil) 创建控件 
    Try  
      //操作    执行操作,如果没有异常,不执行Except,发生了异常就执行Except,把控件free。
    Except
      Free;
    end;
      

  5.   

    Create(Nil) 创建控件 
    Try  
      //操作    执行操作,如果没有异常,不执行Except,发生了异常就执行Except,把控件free。
    Finally
      Free;
    end;
      

  6.   

    Create(Nil) 创建控件 
    Try  
      //操作   
    Finally
      Free;
    end;
      

  7.   

    >>我是在Unit里面的(没有Form)
    那你考慮 Create(Application)
    Application總會有的,
    這樣,在程序 Exit 時, 會自動將自己所有的控件 free!
      

  8.   

    使用不使用异常保护,个人认为创建这个动作没有必要使用异常保护另外创建的时候指定AOwner属性,是为了指定释放被创建控件的对象,如果你的程序没有窗体,也应该指定为Application本身。当然指定和不指定的效果都是一样的,因为程序关闭的时候,进程空间都不存在了,自然是全部彻底释放!
      

  9.   

    to FrameSniper(§绕瀑游龙§) 
    >>当然指定和不指定的效果都是一样的,因为程序关闭的时候,进程空间都不存在了,自然是全部彻底释放!
    这句话怎么解释 ?