請問我已經有assigned 為什麼還出錯啊 ( 积分: 50 )

  • 主题发起人 主题发起人 菜中之菜
  • 开始时间 开始时间

菜中之菜

Unregistered / Unconfirmed
GUEST, unregistred user!
If assigned(lqcrbbf) and (lqcrbbf.suiEdit1.Text<>'') Then begin
請問我已經有assigned 為什麼還出錯啊
 
If assigned(lqcrbbf) and (lqcrbbf.suiEdit1.Text<>'') Then begin
請問我已經有assigned 為什麼還出錯啊
 
If assigned(lqcrbbf) then
if (lqcrbbf.suiEdit1.Text<>'') Then
begin
....
end;
 
如果你的lqcrbbf已经释放了,当然还会出错,比如这样:
var p:tlist;
begin
p:=tlist.create;
p.free;
if assigned(p) then i:=p.count;//这时p已经释放,但是p<>nil,用assignd(p)=true,所以会出错。
...
 
Description

Use Assigned to determine whether the pointer or procedure referenced by P is nil. P must be a variable reference of a pointer or procedural type. [red]Assigned(P) corresponds to the test P<&gt
nil for a pointer variable, and @P <&gt
nil for a procedural variable.[/red]
Assigned returns false if P is nil, true otherwise.

Note: Assigned can't detect a dangling pointer--that is, one that isn't nil but no longer points to valid data. For example, in the code example for Assigned, Assigned won't detect the fact that P isn't valid.
楼主注意Note部分所提出的,Assigned不能发现游离指针(即它不为nil,但已经不再指向一个合法值)
 
同意TYZhang的意见。。。。
但也有可能出在lqcrbbf.suiEdit1上
 
同意 可能出现在lqcrbbf.suiedit1上
 
我用try except 為什麼不捉不到,
 
他出的是什么错误啊,你得Try except写在什么位置?
 
问题出在 (lqcrbbf.suiEdit1.Text<>'') 上

>>>>我用try except 為什麼不捉不到,

在调试环境下是捕捉不到错误的,脱离调试环境可以捕捉到
try
If assigned(lqcrbbf) and (lqcrbbf.suiEdit1.Text<>'') Then
showmessage('ok');
except
showmessage('error');
end;

 
楼主用FreeAndNil来释放资源...
 
多人接受答案了。
 
后退
顶部