想设计点击一个按钮弹出一个表单窗口,为什么用showmodal和show总出现错误??例程如下:procedure TForm1.Button1Click(Sender: TObject);
begin
 SIMON.Show;//或者showmodal
end;
运行代码后有如下错误提示:project project1.exe raised exception class EAccessViolation with message
'AccessViolation at address 00462A7E in module 'project1.exe '.Read of adree '000000'
process......以下代码是可以正确执行的:procedure TForm1.Button1Click(Sender: TObject);
begin
  Application.CreateForm(TSIMON,SIMON);
   SIMON.ShowModal;
  SIMON.free;
end;

解决方案 »

  1.   

    {那个错误提示的意思是:你还没有创建SIMON这个窗体对象,就使用它了。(全局变量初始值为nil,因此提示指针越界到内存位置000000处)}procedure TForm1.Button1Click(Sender: TObject); 
    begin
      if SIMON = nil then SIMON := TSIMON.Create(Application); 
      SIMON.Show;//或者showmodal 
    end;
      

  2.   

    楼上正解
    一般MDI的窗体都用show
      

  3.   

    procedure TForm1.Button1Click(Sender: TObject); 
    begin
      if not Assigned(SIMON) then 
        SIMON := TSIMON.Create(Application); 
      SIMON.Show;//或者showmodal 
    end;