为什么我的程序退出就报错!(100分)

  • 主题发起人 主题发起人 guming1
  • 开始时间 开始时间
G

guming1

Unregistered / Unconfirmed
GUEST, unregistred user!
我的程序退出就报错!
先出现“应用程序错误”对话框,信息如下:
"0x0040311c"指令引用的"oxfffffffc"内存。该内存不能为"read".

选择“确定”
出现"application error"对话框:
Exception EAccessViolation in module rsgl.exe at 0000311C.
Access violation at address 0040311C in module 'rsgl.exe'. Read of address FFFFFFFC.

我的系统:win2000,工具:delphi 5 pack1
程序名称"rsgl.exe"
 
有内存汇漏,是不是用了动态数据,或动态分配了内存。
很可能动态数据超上界!或对象释放后再使用!
 
不明白!我没有定义啊?
具个例子吧!
谢谢
 
是不是在退出时的三个事件中有对已经释放调的窗体或控件的引用?
 
我只在“onclosequery”中写了:
begin
if Application.MessageBox('您确定要退出系统吗?','注意',
MB_OKCANCEL + MB_DEFBUTTON1) = IDOK then
begin
release;
end
else
abort;
end;
 
在ONCLOSEQUERY事件中控制能否关闭系统应该用CANCLOSE呀
IF ...=MROK THEN
CANCLOSE=TRUE
ELSE
CANCLOSE=FALSE;
 
有些时候系统资源没有释放干净就会这样。我最近写了个程序,里面用到几个tcpserver的控件
如果推出是状态是active就会报错,后来我先把他置成false,在sleep一端时间再结束就好了!
 
如果用你的方法,RELEASE会再次出发ONCLOSEQUERY事件,而ABORT是回退过程,常用于TEDIT
TMEMO等或TPRINTER等的撤消操作
 
我找到了!
是我在开始定义了: fwqmc,yhkl:string[20];
不过还是要谢谢大家!
后面: reset(sqlfile,1);
blockread(sqlfile,fwqmc,30);
blockread(sqlfile,yhkl,30);
closefile(sqlfile);[:(][:(!][:D]
 
忘了发分了!
[:D][:D]
 
后退
顶部