现有如下代码,运行正常但是对里面的代吗不太理解;
....
var
  Mainform: TMainform;
  x1:Tform;
implementation
uses Unit2;
{$R *.dfm}
procedure TMainform.Button1Click(Sender: TObject);
begin
 x1:=Tform.Create(self);
 //x1:=Tform.Create(form2);
 //x1:=Tform.Create(application);
 //x1:=Tform(form2);  
 x1.Show;
end;procedure TMainform.Button2Click(Sender: TObject);
begin
 x1.release;
 x1:=nil;
end;
问题1:x1:=Tform.Create(self);
      x1:=Tform.Create(application);
      x1:=Tform.Create(form2);
      x1:=Tform(form2); 
以上四句有何区别,前三句执行后的结果好象是一样的;问题2:x1:=nil是什么意思,nil是不是代表空指针,如果nil是空指针。那么x1应该是一个指针类型的数据啊,可x1是一个Tform类的实列啊? 
请大家多多指教,谢谢1