如何判断对象是否已经Create(100分)

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

swei412

Unregistered / Unconfirmed
GUEST, unregistred user!
在java,c++中,对象变量在没有create之前为Null,但Delphi好像不是,而好像是一个随机数。
不知各位有什么办法判断对象是否已经Create。
 
是否会等于Nil?
或者
var aa:string;
...
try
aa:=myobj.classname;
except
//没有create
end;
 
if assigned(form1) then//已经建立
 
在定义的时候 给他初值nil
释放的时候使用 freeandnil函数

判断的时候用Assinged()
 
对象变量在没有 Create 之前,对其用 Assigned(Obj) 肯定为 False 啊。
当然要是你 Create 过后再 Free,而后没有显示地执行 Obj := nil
的话
Assigned(Obj) 就不灵了:)但释放的时候用 FreeAndNil(Obj) 就没问题。

 
用 Assigned 函数,如果Assigned(YourVar)是False, 那就是没有建立
 
我们伟大领袖毛主席说过:实践是检验真理的唯一标准
那些所谓的用Assigned就能解决问题的人不知道你们试过了没有?
所有的回答中只有 完颜康 是对的。
在delphi中对象变量实际上是一个对象指针
但是不知道对象在没有Create之前,对象里放的东西是不是固定的
 
学写学习
好像在D5开发人员指南里面看到过类似的问题

惭愧
 
举个例子
a:TObject1;
if Assigned(a) then
a:=TObject1.create;
释放的时候一定要:
freeandnil(a);
或者
a.free

a:=nil
//这个方法编译器可能警告
这样就可以在程序里直接用Assigned()来判断了,




 
if not Assigned(frm) then
frm := Tfrm.Create(Application);
frm.Show;

关闭的时候要注意
Close事件中
Action := CaFree;
frm := nil;
这样,只要你的表单是打开的了,就会直接打开,如果没有打开,就会创建。打开后关掉了
再重开也没有问题。
你要的是不是这个意思?
 
if objectname<>nil then等等
 
大家说的已经很清楚了:就是在声明后应该初始化。
 
够详细的了!自己体会。
 
谢谢大家了,其实我想问的就是怎样判断对象是否Create
比方说:
var
a:TObject;
b:TObject;
 
后退
顶部