超头痛,在退出程序时出错,请DELHPI高手指点迷经!TKS

sundgy 2006-07-03 01:39:00
DELPHI +SQL SERVER2000编写一小软件,程序在关闭时出现如所示错误提示,
Debugger Exception Notification(注:标题)
Project mp.exe raised exception class EAccessViolation with message 'Access violation at address 0040489c in module 'mp.exe'.Read of address 00000018'.Process stopped .Use Step or Run to continue.

点击确定后出下如下所示提示,
Error(注:标题)
Runtime error 216 at 004039C6.

我怀疑是数据库有问题,因为如果我换上以前的数据库不会出现这种情况,昨天我导了一些数据进去就出现种错误提示,数据库连接我采用的是动态数据库连接,这应该不是情况所在,因为如我之前所述,程序没办,只是在导入一些数据进去就出现这种问题,请问怎么解决?
...全文
273 25 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
Cassava 2006-07-04
  • 打赏
  • 举报
回复
一般碰到这种问题我都是用代码排除法,也就是一段段代码去掉,直到没有出现错误为止,用这种办法很快就能找到错误的原因了
sundgy 2006-07-04
  • 打赏
  • 举报
回复
程序指向: Result := CallWindowProc(FPrevWndProc, FControl.Handle, Msg,
WParam, LParam)有异常请问是什么意思?
sundgy 2006-07-04
  • 打赏
  • 举报
回复
呵.....当然不会
wudi_1982 2006-07-04
  • 打赏
  • 举报
回复
你从数据库都读了什么数据啊。。不会读写了什么“FUCK DELPHI"之类的吧。
sundgy 2006-07-04
  • 打赏
  • 举报
回复
没有,我是用ADO动态链接
cncharles 2006-07-04
  • 打赏
  • 举报
回复
你有没有用DLL
sundgy 2006-07-04
  • 打赏
  • 举报
回复
我就整不明白,为什么连接前天的数据库没问题,今天的就出现这种错误提示.照理说如果是程序释放内存或DLL出现了问题那应该连接前天的数据库也会出现这种错误提示啊.为什么换成新的就不行了.
sundgy 2006-07-04
  • 打赏
  • 举报
回复
to:cncharles(旺仔) 问题依旧
sundgy 2006-07-04
  • 打赏
  • 举报
回复
TO:<ffwin() >别在那里他娘的装腔做势,你还不配说中国人怎么样.
cncharles 2006-07-04
  • 打赏
  • 举报
回复
procedure TMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action := cafree;
end;


procedure TMain.Destory(Sender: TObject);
begin
main := nil;
end;
jaffy 2006-07-04
  • 打赏
  • 举报
回复
肯定是资源释放的问题,比如数据库的连接没有释放,关闭之后又调用了等等.
ffwin 2006-07-04
  • 打赏
  • 举报
回复
懒的回答,我看到了中国程序员的悲哀,中国的悲哀
sundgy 2006-07-04
  • 打赏
  • 举报
回复
换成<Top swcsoft(对不起,我踩到你尾巴了!) >问题依旧没解决.还是一样.
sundgy 2006-07-04
  • 打赏
  • 举报
回复
完整退出主程序如下代码:
procedure TMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action := cafree;
main := nil;
end;

procedure TMain.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if main.Visible = false then
exit;

if application.MessageBox('你确定要退出系统吗?','系统提示',MB_ICONQUESTION + MB_YESNO) = ID_NO then
CanClose := false
else
CanClose := true;
end;
sundgy 2006-07-04
  • 打赏
  • 举报
回复
关键是如果我换用我以前的数据库,退出程序是不会出什么问题的哟.我的主程序退出代码如下:
action := cafree;
main := nil;
sundgy 2006-07-04
  • 打赏
  • 举报
回复
唉,只能靠自己了
fcshen 2006-07-04
  • 打赏
  • 举报
回复
肯定不是退出的代码造成的.一般是内存地址错误
小呆之家 2006-07-03
  • 打赏
  • 举报
回复
,数据库连接我采用的是动态数据库连接,
//---估计是你在DLL中退出释放内存地址出错或是在DLL中释放内存后,主程序再次操作不存在的资源造成的内存地址访问错.
你好好查查是不是DLL的APPLICATION与主程序中APPLICATION的控制句柄的转让的问题.
Rubi 2006-07-03
  • 打赏
  • 举报
回复
2: Action:=caNone;

Action:=caFree;看看
wudi_1982 2006-07-03
  • 打赏
  • 举报
回复
把代码贴出来看看。。这种问题不好说。。一般是资源释放得问题。。自己好好研究研究代码。估计只有你自己解决了。
加载更多回复(5)

2,507

社区成员

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

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