读书人

作等待窗口的疑问

发布时间: 2013-07-08 14:13:00 作者: rapoo

做等待窗口的疑问
在上传文件前,我用下面的语句,显示了一个等待窗体

FConWait := TFConWait.Create(Application); // 显示等待窗体
FConWait.Show;

…… //上传文件的代码

if assigned(FConWait) then FreeAndNil(FConWait); //完了后用这句释放等待窗体


上面的代码,在第一次上传时都很正常,在第二次上传时,在FreeAndNil(FConWait);这里报了内存错误,请问怎么写才正确的?
[解决办法]
打断点单步跑一下,观察下各个变量值的情况
把你上传的代码去掉,看问题是否还存在

我测试了下


procedure TForm1.btn1Click(Sender: TObject);
var
fform: TForm;
i: Integer;
begin
fform := TForm.Create(Application);
fform.Show;

// 磨点时间
for i := 0 to 999 do
Caption := IntToStr(i);

FreeAndNil(fform);
end;

没有问题,估计你出问题是在上传的代码里,或是在你TFConWait的定义里

顺便说下
FreeAndNil内部会调用free,free内部会判断对象是否为nil,所以assigned(FConWait)是多余的。
当然这跟你出错的问题无关

读书人网 >.NET

热点推荐