关于指针,请教(100分)

  • 主题发起人 主题发起人 screen
  • 开始时间 开始时间
S

screen

Unregistered / Unconfirmed
GUEST, unregistred user!
写了一段程序,
if not assigned(win) then
win := Twin.Create(self);
win.show;
...
win.free;

再点击一次这个按钮,居然出错,原因是win 这时已经<> nil 了,
既然Free了,怎么不等于nil呢?怎样才能不用写win := nil ,而实现win free后就为nil?
 
FreeAndNil(Win);
 
在窗体的OnDestroy中写 win := nil
或用FreeAndNil(win)释放win
 
free之后并不保证对象被设为nil的。
要设为nil,可以用楼上的freeandnil方法。
 
Delphi的类都是指针。
Free是析构,
正确用法:
win.free;
win :=nil;
 
if not assigned(win) then
win := Twin.Create(self);
win.show;
...
FreeAndNil(Win);
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部