MDI界面打开子窗口出现地址访问非法的错误。

chao_jian 2005-08-18 12:37:24
最近接手一个程序,多文档界面,有些界面监控Socket消息,偶尔出现一个问题,打开一些窗口,过上一段时间未操作,之后再打开窗口时出现地址访问非法,已经定位好几天了,想了很多办法,跟踪调用堆栈为:MyForm.Show->TCustomForm.SetVisible->TCustomForm.SetWindowToMonitor,用madExcept跟踪的,最后的错误在SetWindowToMonitor方法中,应该可以断定MyForm本身不是nil,否则SetVisible执行马上就会出现地址访问非法,请高手解答,不胜感激。
...全文
211 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
fonganzen 2005-12-28
  • 打赏
  • 举报
回复
你这问题我也遇到过,我把TForm.Edit1KeyDown事件删除了就没有了,具体原因我也不知道。不知道对你有没有启发
Randomize 2005-12-28
  • 打赏
  • 举报
回复
2005-8-18 0:37:25

不結貼人士
lovendII 2005-12-26
  • 打赏
  • 举报
回复
看看你的form上調用了那些對象﹐再關閉form要釋放﹐重新打開form時如果對象需要create,先create再調用
雄牛 2005-12-26
  • 打赏
  • 举报
回复


飘过...
友情UP....

OO_is_just_P 2005-12-25
  • 打赏
  • 举报
回复
碰到过,所有方法确认无误。
后删除所有组件重新放置后正常。原因未知。
lojitang 2005-12-25
  • 打赏
  • 举报
回复
用旺仔的方法,试一下.
lojitang 2005-12-25
  • 打赏
  • 举报
回复
用旺仔的方法,试一下.
chao_jian 2005-08-18
  • 打赏
  • 举报
回复
谢谢大家的指点。

这个问题是无规律出现的,正常的判断都是有的,错误应该是潜藏得比较深,窗口都创建好了,就是显示时无法刷新界面(SetWindowToMonitor),今天查看进程信息,发现出现该问题时句柄数非常多,有900多,这是一个非常重要的信息,可能是一些系统对象未及时释放,大家有什么好办法检查这些遗漏吗?
hthunter 2005-08-18
  • 打赏
  • 举报
回复
是不是form里面用到的东西在别的地方被释放掉了?
设个断点,用单步调试慢慢找吧
opqhjb_2002 2005-08-18
  • 打赏
  • 举报
回复
mark
mjpok 2005-08-18
  • 打赏
  • 举报
回复
顶一下!
cncharles 2005-08-18
  • 打赏
  • 举报
回复
在MDIForm调用MDIChild窗体时要这样用
if not Assigned(Form2) then begin
Form2:=TForm2.Create(Self);
Form2.Show;
end else
Form2.BringToFront;

另外在MDIChild的OnClose, OnDestroy中要以下代码 Form2为MIDChild窗体的名称
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:=caFree;
end;

procedure TForm2.FormDestroy(Sender: TObject);
begin
Form2:=nil;
end;
konhon 2005-08-18
  • 打赏
  • 举报
回复
這種錯誤只有自己細心點, 慢慢調試.....
78hgdong 2005-08-18
  • 打赏
  • 举报
回复
如楼上所说,也可能和非法访问内存地址或者内存地址越界泄漏
naughtyboy 2005-08-18
  • 打赏
  • 举报
回复
太抽象了
Show之前判断一下
if (not Assigned(AForm)) or (AForm <> nil) then
AForm := TAForm.Create();
AForm.Show;

Close或者Destroy的同样要处理一下
myheartzhang 2005-08-18
  • 打赏
  • 举报
回复
旺仔的方法,试试,
如果没有什么问题的话,
就是你的MYFORM 里访问了无效的内存。
这个问题我遇到过。

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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