Project Fig2004.exe raised exception class EAccessViolation with message'Access violation at address 00569139 in module Fig2004.exe'.Read of address 0149913A'.Process stopped.Use Step or Run to continue.
我如是按F7、F8、F9的任何一个键都会出现提示:Runtime error 216 at 004414F9.错误提示是在这种情况下出现的:我在MainForm.OnShow事件进行了某些条件判断,如果某个条件不满足,则MainForm.Close,然后系统会执行一些代码(好像是初始化某些对象?),接着就出现这个错误;但是如果所有条件都通过了,则正常运行程序,我试过再Close,却没有任何错误?

解决方案 »

  1.   

    这种情况很复杂啦~
    通常在涉及到数据库操作的时候会遇到,不过还有的时候是因为多个Unit引用的时候会出这个问题,把尽量能放到implementation下引用的就不要放在interface下去引用其实这类问题也不复杂呀,你只要设置一个断点单步调试就能知道什么地方出问题,当然这是调试上的问题,其实关键的还是在于,你写代码的时候尽量还是做点异常处理,这样也能在出异常的时候大概能知道那个模块出了问题,养成好的习惯对自己没有坏处的~
    建议:设置一个断点调试~
      

  2.   

    是不是因为mainform.close之后程序也结束了,不能再执行代码了呢?
      

  3.   

    mainform.close  为什么不用Application.terminal
      

  4.   

    对于"把尽量能放到implementation下引用的就不要放在interface下去引用" 这句.
    我的观点刚好相反. 
    把尽量能放到interface下引用的就不要放在implementation下去引用,这样可以尽量避免互相引用, 减少代码的耦合.
      

  5.   

    把MainForm.Close换成application.teminate试试
      

  6.   

    原因好像是这样:我调试了很久,最后把所有OnShow中的代码全部移到OnCreate中去,就没有出现什么问题了,当Application.Terminal时,也不会再执行任何代码。●●●●●●●●●●●●下面这个问题解决了,一并给分●●●●●●●●●●●●●
    但还有一个问题:有时候我的程序正常退出时会出现一个错误提示,提示什么.exe出什么问题,需杂关闭,不是知道是什么原因(很少出现这种问题,2000下更少,XP下多),可能会是什么原因呢?
      

  7.   

    TO:wilowind(无风雪亦飘) 
    说的有道理
      

  8.   

    TO:wilowind(无风雪亦飘) 
    说的有道理
    但还有一个问题:有时候我的程序正常退出时会出现一个错误提示,提示什么.exe出什么问题,需杂关闭,不是知道是什么原因(很少出现这种问题,2000下更少,XP下多),可能会是什么原因呢?可能是你退出程序时有些资源没有释放,退出时最好用Application.Terminate;
      

  9.   

    你要是认为是你的程序没有错误,把你成生的.exe文件删除了,再编译一个.也可以看看楼上的方法,因为引起这样的错误的原因真的很多,你也最好把代码拿过来叫我们看看.
      

  10.   

    delphi本身问题就很多,烦的要死,可能本来就是DELPHI问题
      

  11.   

    不一定是delphi的问题,从自身找原因吧,大多是自己写的代码有问题
      

  12.   

    楼上的,不要程序一出错就说Delphi的不好!所有这些问题都是楼主自己代码的问题!可以想象的出你的代码写的很糟糕,可能在其他地方也会出现一些你意想不到的问题的。慢慢调试吧,尤其是内存管理,最好让自己思路清晰了!
      

  13.   

    特别是改用Access数据库后,才出现这类的问题Access让我受够了!
      

  14.   

    BigAngell(风雨英雄)
    先不要管程序里的问题了,平心静气一下,作下深呼吸,散散步
    你现在的状态很不适合写代码,现在一分钟写下的代码将来可能会浪费你一周的时间