一个奇怪的问题,请大家帮助解决

ameng007 2000-07-08 10:53:00
在应用中,我手工CREATE和FREE一个窗口,在FREE时出现读地址错误,不知是何原因,调
用窗口的代码如下:
try
Application.CreateForm(TFrmCompute, FrmCompute);
if frmCompute.ShowModal = mrOk then
FrmInput.Refresh;
finally
if Assigned(frmCompute) then
frmCompute.Free;
end;
其中frmCompute窗口中也没用到指针但有两个动态数组,DESTROY事件中也没有任何代码,
...全文
229 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ameng007 2000-07-12
  • 打赏
  • 举报
回复
To meijg,非常感谢您的热心帮助,但在FRMCOMPUTE中没有动态创建的控件,只有动动态
数组算得上比较特殊的东东。
meijg 2000-07-11
  • 打赏
  • 举报
回复
那就看看你的其他某个动态创建的控件是否在释放的时候出了问题
我见天就遇到了这样的问题,动态创建的一个控件,如采用手工释放,在程序结束的时候汇报错,如果去掉手工释放的代码就一切正常,我也很奇怪,你不妨试试
ameng007 2000-07-11
  • 打赏
  • 举报
回复
我在调试过程中发现,在执行 if Assigned(frmCompute) then frmCompute.Free;
之前 frmCompute的各种属性都很正常,FAction 属性为NIL。并且在同时机器上编译运行
时也会出现同样问题。
hfyun 2000-07-09
  • 打赏
  • 举报
回复
经测试没发现问题呀。
当然,如果你自己创建Form,最好不要用Application.CreateForm方法,还是用Form1 := TForm1.Create的形式吧,因为Application.CreateForm可能会将该Form变为Auto-Create Forms,这种Form是不要手工Free的。
peacock 2000-07-09
  • 打赏
  • 举报
回复
类似的问题我也遇到过:我的有些程序放在某些机器上能正常运行,而有的机器(情况很少)出现地址错误。可能是你的Windows有问题,用Norton修复一下,如果你愿意的话,格式化硬盘重装Windows试试。
meijg 2000-07-09
  • 打赏
  • 举报
回复
建议你看看frmcompute的onclose事件处理程序,是否将action参数设为了CaFree;可能在你手工free frmconpute的时候,这个窗口已经被free掉了
LaoZheng 2000-07-09
  • 打赏
  • 举报
回复
看看frmCompute内部处理上有没有问题
eagleyin 2000-07-09
  • 打赏
  • 举报
回复
还有一种可能,你把 frmCompute Free了以后要 frmCompute := nil; 否则下次这样调用时 frmCompute 中是一个指向非法内存区域的指针,调用它的 free 方法当然要faill了。
twoy2000 2000-07-09
  • 打赏
  • 举报
回复
将frmCompute的Action属性设为nil.
好像你的程序结构有问题?
meijg 2000-07-08
  • 打赏
  • 举报
回复
你的程序测试过了,没有问题阿,是不适的判断语句assigned(frncompute) 不满足阿

5,386

社区成员

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

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