我在一个类的方法中用self.free释放自己,可是稍后用assigned 检查,仍然为true,而它的成员变量仍然能访问,怎么回事?
解决方案 »
- delphi全屏显示
- 考勤系统的一个设计问题.做过考勤系统的兄弟请进!
- 100分求音频频谱分析源码
- TValueListEditor的赋值问题
- 如何抓取網頁中input帶出的清單呢(ajax)
- 一个菜问题,请教各位了
- 如何把DBLookupComboBox显示为初始状态
- 谁有人事劳资管理的系统设计或数据库设计、源代码?(交换)
- 请问用Servers页中wordapplication和wordducement如何对已打开的word文档进行另存?
- ADO.如何一次将一个表中的记录全部加入另一个表(而且这个表(即新表)还多了一个识别字段)?
- 如何使程序不出现在任务列表中?
- 类型转换的问题 救命!!!!
var frmChild: TForm;
frmChild := TFrom.Create(nil);
try
frmChild.ShowModal();
finally
frmChild.Free();
frmChild := nil;
end;
另外,用assigned检查某个已释放的类实例并不正确,必须在释放是将该实例置为NIL。
即使该实例已经释放,如果没有将实例指针置为空,则指针所指内容为随机,有可能有内容,也有可能没内容,在c中被称为空悬指针。
用函数FREEANDNIL看看你就知道了;
你可以试试:labe1.free;if assgined(label1) then showmessage('true');
var
Label1, Label2: TLabel;
begin
Label1 := TLabel.Create(self);
Label2 := Label1;//两个变量指向同一个对象。
Label1.Free();//释放这个对象
//Label2一定不是nil,自然你也不能要求Label1是nil.
end;
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
—————————————————————————————————