clq
浏览(0) +
2007-02-09 13:20:10 发表
编辑
关键字:
今天发现一个非常奇怪的错误,程序在退出时老是报错,看了一下错误号为216,应当是访问了非法内存,最后发现是一个动态创建的 TWebBrowser 引起的,修改后的代码如下.
constructor TCLQHttpThreadCotrol1.Create(AOwner: TComponent);
begin
inherited;
post_data1:=tstringlist.Create;
pre_data1:=tstringlist.Create;
is_get1:=false;
//创建后要自己删除//可能是delphi7的bug
WebBrowser1:=TWebBrowser.Create(application.MainForm);
WebBrowser1.Visible:=false;
end;
destructor TCLQHttpThreadCotrol1.Destroy;
begin
//http1.free; //?需要这个调用吗?
post_data1.Free;
pre_data1.Free;
WebBrowser1.Free;//创建后要自己删除//可能是delphi7的bug
WebBrowser1:=nil;//创建后要自己删除//可能是delphi7的bug
inherited;
end;
增加了
WebBrowser1.Free;//创建后要自己删除//可能是delphi7的bug
WebBrowser1:=nil;//创建后要自己删除//可能是delphi7的bug
后程序才正常,但实际上 "TWebBrowser.Create(application.MainForm);"已经指明了由主窗体来自动释放的了.更为奇怪的是在一般情况下是不会出错的,只有在程序中调用了 tsavedialog.execute 后在退出程序时才会报这个错.真是百思不得其解. tsavedialog 和主窗体的控件自动释放在什么关系? 这是我碰到的最不可思议的bug了.
NEWBT官方QQ群1: 276678893
可求档连环画,漫画;询问文本处理大师等软件使用技巧;求档softhub软件下载及使用技巧.
但不可"开车",严禁国家敏感话题,不可求档涉及版权的文档软件.
验证问题说明申请入群原因即可.