DELPHI居然有这样的问题,真让人失望!(0分)

  • 主题发起人 主题发起人 cxx1997
  • 开始时间 开始时间
C

cxx1997

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure button1.click;
var
button:tbutton;
begin
button.free;
end;
按钮点过后,窗体就不见了。唉!
 
是不是应该这样:
procedure button1.click;
var
button:tbutton;
begin
button:=TButton.Create
//--------
.....
button.free;
end;
 
同意楼上的。没有Create哪来free。
 
全局变量使用delphi会自动初始化,局部变量delphi不负责初始化,会随机的产生一个值,
这个是object pascal语法里已经说明的,cxx1997,你使用局部变量不初始化,当然会产生
不良后果了,这个object pascal的手册里已经说明了,人家已经说明的事情,你还在这里
追究什么?关delphi什么事情?
 
procedure button1.click;
var
button:tbutton
//作为局部变量,button应该首先create,否则无法初始化
begin
button.free;
end;
解决办法:
1。做成全局变量。
var
button:tbutton
//作为全局变量,这里初始化

procedure button1.click;
begin
button.free;
end;
2。

procedure button1.click;
var
button:tbutton
begin
button:=tbutton.create(self);//作为局部变量,button首先初始化.

button.free;
end;

 
procedure TForm1.Button1Click(Sender: TObject);
var
button:tbutton;
begin
button:=tbutton.create(self);//作为局部变量,button首先初始化.
button.Parent:=form1;
button.Caption:='我得电脑';
//button.free;//如果此处有button.free那一定不能看到动态生成的安纽!
//应为一旦释放,创建也就没有作用了!要想释放,在其他地方释放,如form1.close()就可以了
end;
 
问题是:我想出错,都没有!
 
你调用一下release或者destroy试试看呢?
free方法在delphi的帮助信息中特别提示,如果对象本身是nil时不会出错。
这只是delphi提供的方法之一。不要胡扁一门技术,存在就是有她存在的道理。
 
接受答案了.
 
后退
顶部