分析应该是这样:
1、你的TFom2 .Button1.OnClick事件中,定义一个TFom2类型的Fform变量:
procedure TForm2.Button1Click(Sender: TObject);
var Fform:tform2;
begin
  Fform.Close;
end;
这是犯了对象(自身)内部,再定义引用自身的错误,Button1,就是Fom2(对象)实体,在它内部定义引用一个它的父类,这样的变量是不能使用的;
2、Delphi有修改错误的机制,它约定你这样的错误,就是引用自身的一个方法。 这样,Delph也就执行了,Fom2.Close;

解决方案 »

  1.   

    procedure TForm2.Button1Click(Sender: TObject);
    var
    Fform:tform2;
    begin
    Fform.Close;
    end;因为默认的代码优化,使得Fform.Close没对eax赋值,直接调用TCustomForm.Close,而eax此时正好指向cform对象实例,所以跟cform.Close效果一样。
      

  2.   

    按楼上的说法,这样的优化就是个BUG,应该弹出“指针越界”或是“访问的对象不存在”异常。