原来写了个程序窗体 F_Main.现在新创建一个form1来引用它。第1次点开来正常显示。关闭后回到主窗体。第2次再点。就提示project1.exe多少多少内存地址出错了。代码如下:
procedure TForm1.Button1Click(Sender: TObject);
begin
   application.CreateForm(tF_Main,F_Main);
  F_Main.ShowModal ;
  F_Main.Free;
end;

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
       application.CreateForm(tF_Main,F_Main);
      F_Main.ShowModal ;
      F_Main :=nil;
      F_Main.Free;
    end;
      

  2.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
    F_Main:Tyourform;
    begin
      F_Main:=Tyourform.create(nil);
      F_Main.ShowModal ;
      F_Main.Free;
    end;
      

  3.   

    最后只能修改代码如下了
    application.CreateForm(tbasic_form,basic_form);
       if  assigned(basic_form) then
       basic_form.Show;
     //basic_form.ShowModal;
     // basic_form:=nil;
     // basic_form.Free;
     //直接basic_form.ShowModal;就内存地址出错!
    用SHOWMODAL事件2次就内存报错误(难道我什么东西没释放掉?但是我窗体basic_form关闭用了close事件啊?它的组件应该释放了啊?!)。用SHOW事件就没错误。
    不知道如何解释啊?有人指点么?!!!
      

  4.   

    1. 去除在.dpr中的自动创建basic_form
    2. 
      application.create(tbasic_form,basic_form);
      basic_form.showmodal;
      freeandnil(basic_form);我就是这样做的
    你用assigned也可以,但是比较难控制后面的form不被点击