[DELPHI]对象没有nil引起的程序异常

现有的一个项目在D2009下编译,运行正常,换到D2010下编译正常,运行正常,但在点击退出时出现异常。

7

像平时遇到这样的问题,第一感觉是:

1.对象没有创建就访问

2.对象重复释放

因为是在退出的按钮事件中出错,而退出的代码只有一条close语句。所以怀疑是有对象重复释放。

但找半天也没有找出问题所在。

后来无意间想到我用到了登陆窗口,会不会是登陆窗口窗体引起的问题。

把工程文件打开:

frmLogin := TfrmLogin.Create(Application);
  frmLogin.ShowModal;
  try
    if frmLogin.ModalResult = 1 then
    begin
      frmLogin.Free;
      frmLogin:=nil;   //出错时,没有这一句
      Application.CreateForm(TfrmANAM, frmANAM);
      Application.Run;
    end;
  finally
    frmLogin.Free;
  end;

最后加上了一句frmLogin:=nil就可以了。

通过这次以后,记得以后对象不仅要free,还要赋值为nil。至于为什么d2009不报错,就不得而知。可能是d2010更严格些吧?

posted @ 2009-10-26 13:26  翼想天开的男孩  阅读(337)  评论(0编辑  收藏  举报