一个数据库应用本来一起功能正常,加了一个用fastreport开发的报表form后,编译正常,运行也正常,就是在退出时会弹出报错信息:
Debugger Exception NotificationProject kp.exe raised exception class EInvalidPointer with message ‘Invalid pointer operation’. Process stropped. Use Step or Run to continue.然后即使将调用该form的代码注释,再编译运行,同样会出现上述报错信息,百思不得其解,请高人指点。

解决方案 »

  1.   

    form中引用了一些没有产生的窗体或者动态产生了诸如流、列表、对象等,没有释放掉的时候都会产生这类型的错误的
      

  2.   

    你把你增加的单元的应用也要去掉才,肯定就不会报错了。fastreport有问题,是什么版本的。
      

  3.   

    fastreport 4.2 for dephi 7
      

  4.   

    在程序退出的时候,自己写代码释放使用的对象,并且设置其为 nil ;
      

  5.   

    我的调用方式:在form1的button1的click事件中写如下代码:
    procedure TfrmFpmxcx.tlbbPrintClick(Sender: TObject);
    var
      frmFR_mxcx:TfrmFR_mxcx;
    begin
     frmFR_mxcx:=TfrmFR_mxcx.Create(Application);
     frmFR_mxcx.frxReport1.ShowReport;
     frmFR_mxcx.Free;
    end;其中frmFR_mxcx就是用fastReport 4.2所做的报表form,出报错信息后,
    注掉这段代码,问题编译依然存在。
      

  6.   

      with TfrmFR_mxcx.Create(nil) do
      begin
        try
          frmFR_mxcx.frxReport1.ShowReport; 
        finally
          free;
        end;
      end;TfrmFR_mxcx.Create(Application); 如果你这样写就不需要自己释放了,delphi会自动释放的
      

  7.   

    谢谢各位兄弟的指点,改成GHY412的代码后依然会报错,不知道是不是因为frxReport1.ShowReport在调用之后,还需要对报表进行释放,但是用什么方法进行释放。
      

  8.   

    為什麼不trace?>估計是你在報表form裡面的,有使用到自己創建的對象,但已經釋放了,結果你還去釋放,導致出錯,檢查formdestroy事件,看是否有寫?如果有寫,看inherited是不是放在最後,要放在最後才可以;
      

  9.   

    frmFR_mxcx.Free; 
    frmFR_mxcx:=nil;如果还有问题,可能是别的地方。或者,可以将调用的这几行代码注释掉,引用 frmFR_mxcx 的那个uses 也去掉,看还会出错吗
      

  10.   

    内存没释放干净
    将你的 application.Terminate换成下面的代码试一下var 
    Wnd:   HWND; 
    begin 
        Wnd   :=   OpenProcess(PROCESS_ALL_ACCESS,   true,   GetCurrentProcessId); 
        TerminateProcess(Wnd,   0); 
    end;
      

  11.   

    7楼的兄弟说的对,你如果是用Create(Application),系统会释放的,你手动释放会出问题。要Create(nil)才手动释放
      

  12.   

    再次感谢各位的指点。我被FASTREPORT折磨得已经换QUICKREPORT了,这样倒是就不报错了。
    散分了。