如何知道一个VCL对象已被创建(100分)

  • 主题发起人 主题发起人 meckyhan
  • 开始时间 开始时间
M

meckyhan

Unregistered / Unconfirmed
GUEST, unregistred user!
比如
定义了一个这样的数组
var
Streams : array of TMemoryStream
begin
SetLength(Streams,10)
//在以下的操作中Streams数组成员被创建的个数不定
//这给释放他们带来不便,如果能知道哪几个成员被创建了
//问题就解决了

end
 
判断是不是nil
if Assigned(Streams) then
...
 
if assigned(somestuff) then

but if u free the object,then,it would auto-nil by default
how can we manage this?

to tqz:yysun ask me to send his regards to you. and seasky,pegasus,dnchen,eyes...
 
我一般在Free一个对象后总把它置为nil
好的习惯哦^_^
 
同意she,或者用TList,free掉后就delete之。
thanks CJ
also send my regards to him:)
 
我前两天才知道。对象free后并不自动设为nil
所以赞成she
 
这里用TList比用动态数组管理要方便一些。
 
有道理的,我以前因为没有在.free后面加:=nil,搞的痛苦了半天
 
的确,free是在OBJECT类实现的
if assigned(stuff) then
destory
用ASM写的,我也是FREE了NIL,不过,有时懒的说
 
反正对象是需要自己管理的。无论你如何处理,
ARRAY,TLIST,都是好办法,就看你自己如何用了。
 
我的意思是,不仅仅是自己写程序时,在和别人共同维护代码,特别是系统设计不好
时怎么办呢?//少见这样的情况,呵呵
除了好习惯就没别的方法了?
 
there's no method.

Before Create, assign the variable to nil,
after free, assign it to nil.

I think it's the best and onlt method.
 
当一个对象没有被创建而又使用了该对象中的变量或方法时,
会发生一个Access Violent错误,使用异常处理即可.
当然,我这种方法没有上面各位的好,应为这不仅仅是一个方法问题,还是一个培养良好
编程习惯的问题,我所提供的仅是一种可行方法(我从没用过).
 
这不是编程风格的问题,
 
多人接受答案了。
 
后退
顶部