FORM1用MAINMENU调用FORM2,能成功调用1次. 
调用语句: form2.showmodal;
         form2.free;第二次再点form1里mainmenu选项调用form2时出错:
"Project form1.exe raised exception class EAccessViolation with message 'Access  viloation at address 
00000000. Write of address 00000000'. Process stopped. Use Step or Run continue."怎么回事?大侠们指点下谢谢.

解决方案 »

  1.   

    第一次form2被你free掉了,第二次直接showmodal么当然会错。要先create
      

  2.   

    form2.creat(self);
    form2.showmodal;
    form2.free;出错情况还一模一样!不行啊!
      

  3.   

      if Form2 = nil then
        Application.CreateForm(TForm2, Form2);
      Form2.ShowModal;
      FreeAndNil(Form2);
      

  4.   

    楼上说得对,要先create,然后才能show。
      

  5.   

    解决了非常感谢.小弟初学DELPHI.
    刚注册的号没分给.不好意思啊
      

  6.   

    你把上面的语句改成下面的格式:if not assigned(form2) then //判断form2 是是否存在,如果不存在就创建form2
       form2 := tform2.create(nil);
    form2.showmodal;
    form2 := nil;//释放form2