问题已经解决了,但是想不通!
form1,form2
form1为mainform,上面有一个button,点击后打开form2!!
button.click为:form2:=tform2.Create(nil);
                form2.Show;
f9之后,如果不点击button不打开form2,关闭正常!!!一切ok!!
但是,点击button打开form2,然后再关闭程序,就出access voilation错误。当把form2:=tform2.Create(nil);的nil改成applicatoin之后,程序就没有问题了!!!这是什么问题呢???

解决方案 »

  1.   

    button.click为:if form2=nil then
                   form2:=tform2.Create(nil);
                    form2.Show;
    form2.onclose :
                  from2:=nil ;
                  form2.free ;
     试试
      

  2.   

    我也遇到过类似问题,一般不影响应用,很佩服楼主追求真理的精神。我觉得可能是初始化问题,在程序退出时会自动清理垃圾,对于参数nil创建的对象,可能由于BUG清理时被当着APPLICATION处理,也许DELPHI内部认为程序运行期间所有对象所有权都属于application的,但其语法导致违规对象。以上全部是我的猜测,如果楼主真有兴趣,可以给《DELPHI源码分析》作者:周爱民,写封信,请教下,如果有结果也希望能到CSDN发个贴让大家学习一下。