我的程序有时会出现异常,弹出对话框"Access violation at address 0047fa7a in module 'jfyqsz.exe'.Read of address 01609600"。即使同样的操作,也不是每次出这个异常,一般是机器重起后第一次执行一定的操作会产生该异常,如果异常后关闭程序后重起就再不会这样了。请大侠分析一下,大概什么原因?现在不知道0047fa7a是执行到了什么地方,怎样从这个异常信息来得到程序当时执行情况信息?

解决方案 »

  1.   

    这事 只有 CPU 知道 hehe^^你最好是从程序的一开始打个断点跟踪一下,看看运行到那里出了问题,这是唯一的办法
      

  2.   

    引起这样的原因很多,你project里设断点先找到是那个窗体引起的。然后一点点查吧。
      

  3.   

    在前面进行一系列组合操作后,单击N10按钮,就会出异常。该按钮代码如下:
    procedure TfrmYqsz.N10Click(Sender: TObject);
    begin
        if frmQHFX=nil then
        begin
            LockWindowUpdate(ClientHandle);
            if ActiveMDIChild<>nil then ActiveMDIChild.Close;
            Application.ProcessMessages;
            frmQHFX:=TfrmQHFX.Create(Application);
            LockWindowUpdate(0);
        end;
    end;
    我用CPU Window查看执行到该按钮代码时,地址是004f****,跟0047fa7a差远了,因此不知道是执行到哪儿出错的。
      

  4.   

    单步执行,一般是变量初始化不正确,
    如果是frmQHFX:=TfrmQHFX.Create(Application);有问题,你就把create看清楚些如何用
      

  5.   

    报错与地址有关
    好多情况多有可能引发这种错误
    不太好找不过你要初步确定是哪一块有问题
    在DELPHI里运行程序,有错时,程序应该会在相应地方STOP