编译后可以运行,但是再次点击就不行了,大家帮忙看看是什么问题。急!在线等!!

fishgee 2003-08-19 11:42:49
小弟编一个数据库应用程序,主窗体上有个button,点击后弹出子窗体,编译后运行,第一次点击可以弹出子窗体,但是第二次点击就会提示
Access voilation at address 00000000.Read of address 00000000.
子窗体中有三个adoquery控件,主要实现对数据库表的修改。大家帮忙看看是怎么回事呀?谢谢先~
...全文
77 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
lxpbuaa 2003-08-19
  • 打赏
  • 举报
回复
第一次点击后创建的某个对象被销毁了,但是第二次点击时没有重新创建,你可以设置断点跟踪找出销毁位置

————————————————————————————————————
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
————————————————————————————————————
fishgee 2003-08-19
  • 打赏
  • 举报
回复
问题解决了,就是在Button的Click事件中加入了创建窗体的代码。谢谢各位的关心~分数不多,见谅
gselec 2003-08-19
  • 打赏
  • 举报
回复
在子窗体的OnClose加入:
Action:=caFree;
主窗体调用按钮:
var
iForm:t你的窗体;
begin
iForm:=tYours.create(self);
iForm.Show;
end;
cjs5210 2003-08-19
  • 打赏
  • 举报
回复
如果你的程序耗费的资源比较少,其实你可以不用action:=cafree,直接Close
dh9450 2003-08-19
  • 打赏
  • 举报
回复
就是创建一FORM对象嘛 如果异常就FREE了它并且释放内存
fishgee 2003-08-19
  • 打赏
  • 举报
回复
to Shawphen2000(啸峰)
这段代码的作用是什么呢?
fishgee 2003-08-19
  • 打赏
  • 举报
回复
不好意思,刚才错了,其他子窗体也存在这个问题,看来是要重新create
Shawphen2000 2003-08-19
  • 打赏
  • 举报
回复
你在点击窗体的的时候加入以下代码:
var
FormNew: TForm1;
begin
FormNew:=TForm1.Create(Self); //创建对象
try
FormNew.ShowModal; //模态窗体
finally
FormNew.free;
FormNew:=nil;
end;
end;
fishgee 2003-08-19
  • 打赏
  • 举报
回复
是,我在该子窗体的OnClose事件中写了以下代码:
action:=cafree;
但是我在其他子窗体的OnClose事件中也是这样写的呀,没这个问题
Firec 2003-08-19
  • 打赏
  • 举报
回复
恩?大概是你在该窗体close的时候把他free了吧?重新Create!

2,495

社区成员

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

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