在上传文件前,我用下面的语句,显示了一个等待窗体FConWait := TFConWait.Create(Application); // 显示等待窗体
FConWait.Show;…… //上传文件的代码if assigned(FConWait) then FreeAndNil(FConWait); //完了后用这句释放等待窗体
上面的代码,在第一次上传时都很正常,在第二次上传时,在FreeAndNil(FConWait);这里报了内存错误,请问怎么写才正确的?

解决方案 »

  1.   

    打断点单步跑一下,观察下各个变量值的情况
    把你上传的代码去掉,看问题是否还存在我测试了下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)是多余的。
    当然这跟你出错的问题无关