我的程序有时会出现一个错误,在运行exe时不做任何提示就退出,调试运行出错时给出信息如下:
   Access violation at address 0x00000000 Read of address 0x00000000
(错误不是经常出现)
这到底是什么问题,我用到了socket、comm、数据库会是他们引起的吗?还是某一变量。

解决方案 »

  1.   

    可是,同样的代码运行多次才会出现错误(通过socket接收数据,很快)
      

  2.   

    to caixrz
    老兄,咱俩算是难兄难弟。我的程序数据量也很大,而且快。你如果找到解决办法可千万告诉我一声啊![email protected] 先谢了
      

  3.   

    有两种情况会发生
    使用了没有定义的窗体,也就是一个窗体调用另外一个窗体时,而另外的窗体却没有创建2.
    升级delphi.
    装上补丁。如果是d6,就装上sp2
      

  4.   

    to my_first:
    谢了 没定义的窗口是没用过。要是装一下补丁就ok那可好了,请问到那下载啊?
      

  5.   

    是不是www.borland.com 我用的是5.0
      

  6.   

    不是这么简单的,如果你使用了一些第三方控件,就会使情况更加复杂。很多时候,由于控件使用了一些其他资源,导致读取了内存一段受保护的非法地址,就会出现非法操作。比如作者编程时考虑的是访问某个图片或者文件流,而实际上由于某种误操作或者某些连作者都没有考虑过的操作步骤,导致资源还没存在就有控件或者代码去访问了,就会出现非法操作,这种出错的随机性和不可预知性使得调试跟踪起来很麻烦。连“豪杰大眼睛”这样的商业软件都会有可能出现这样的问题。我是往往通过在CPU窗口的跟踪,找出其Call Stack,一步一步地反推它最终出错的代码的。你可以借助ExeMagic之类的工具来方便你。具体详细的方法你可以发信给我。
      

  7.   

    to forgot:
    谢谢,调试时出错是总出现cup窗口,可根本看不懂,forgot你是怎么做的劳驾指点一下。ExeMagic是什么工具呀,那里可以下载到?
      

  8.   

    to forgot:
    老兄 你的Email告诉我好吗 我好联系你
      

  9.   

    你在网上搜索一下“ExceptionalMagic”,应该就会有的,如果还找不到的话就发信给我,ExceptionalMagic的详尽用法可以参看《Delphi深度探索》一书。我的E-mail:[email protected]
      

  10.   

    to forgot:
       真是太感谢了,我找找看,难免还要麻烦你,问题解决了一定给分