软件在退出时报错

xiarx2002 2007-11-19 04:36:46
一个数据库应用本来一起功能正常,加了一个用fastreport开发的报表form后,编译正常,运行也正常,就是在退出时会弹出报错信息:
Debugger Exception Notification

Project kp.exe raised exception class EInvalidPointer with message ‘Invalid pointer operation’. Process stropped. Use Step or Run to continue.

然后即使将调用该form的代码注释,再编译运行,同样会出现上述报错信息,百思不得其解,请高人指点。
...全文
167 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiarx2002 2007-11-21
  • 打赏
  • 举报
回复
结贴了,以后再仔细学习研究吧。
xiarx2002 2007-11-21
  • 打赏
  • 举报
回复
再次感谢各位的指点。我被FASTREPORT折磨得已经换QUICKREPORT了,这样倒是就不报错了。
散分了。
huayufei 2007-11-21
  • 打赏
  • 举报
回复
7楼的兄弟说的对,你如果是用Create(Application),系统会释放的,你手动释放会出问题。要Create(nil)才手动释放
chtlovezj 2007-11-21
  • 打赏
  • 举报
回复
内存没释放干净
将你的 application.Terminate换成下面的代码试一下

var
Wnd: HWND;
begin
Wnd := OpenProcess(PROCESS_ALL_ACCESS, true, GetCurrentProcessId);
TerminateProcess(Wnd, 0);
end;
xiarx2002 2007-11-20
  • 打赏
  • 举报
回复
谢谢各位兄弟的指点,改成GHY412的代码后依然会报错,不知道是不是因为frxReport1.ShowReport在调用之后,还需要对报表进行释放,但是用什么方法进行释放。
ghy412 2007-11-20
  • 打赏
  • 举报
回复
with TfrmFR_mxcx.Create(nil) do
begin
try
frmFR_mxcx.frxReport1.ShowReport;
finally
free;
end;
end;

TfrmFR_mxcx.Create(Application); 如果你这样写就不需要自己释放了,delphi会自动释放的
huayufei 2007-11-20
  • 打赏
  • 举报
回复
应该是程序在关闭时释放资源,找不到内存中的数据,可能是你已经释放过了。
仔细检查一下代码
xiarx2002 2007-11-20
  • 打赏
  • 举报
回复
我的调用方式:在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,出报错信息后,
注掉这段代码,问题编译依然存在。
aiirii 2007-11-20
  • 打赏
  • 举报
回复
在程序退出的时候,自己写代码释放使用的对象,并且设置其为 nil ;
xiarx2002 2007-11-20
  • 打赏
  • 举报
回复
fastreport 4.2 for dephi 7
aiirii 2007-11-20
  • 打赏
  • 举报
回复
frmFR_mxcx.Free;
frmFR_mxcx:=nil;

如果还有问题,可能是别的地方。

或者,可以将调用的这几行代码注释掉,引用 frmFR_mxcx 的那个uses 也去掉,看还会出错吗
金卯刀 2007-11-20
  • 打赏
  • 举报
回复
為什麼不trace?>估計是你在報表form裡面的,有使用到自己創建的對象,但已經釋放了,結果你還去釋放,導致出錯,檢查formdestroy事件,看是否有寫?如果有寫,看inherited是不是放在最後,要放在最後才可以;
yi10000 2007-11-19
  • 打赏
  • 举报
回复
你把你增加的单元的应用也要去掉才,肯定就不会报错了。fastreport有问题,是什么版本的。
我又回来啦 2007-11-19
  • 打赏
  • 举报
回复
form中引用了一些没有产生的窗体或者动态产生了诸如流、列表、对象等,没有释放掉的时候都会产生这类型的错误的

2,496

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧