两个表达式有什么不同?(10分)

  • 主题发起人 主题发起人 navycn
  • 开始时间 开始时间
N

navycn

Unregistered / Unconfirmed
GUEST, unregistred user!
if ((Sc.Attr and faDirectory)<>0) then

和if (Sc.Attr = faDirectory) then

有什么区别?
var Sc:TSearchRec
 
第一个是先与在判断结果是不是等于0
第二个是判断二个值是否相等,相等为一,不相等为0
意思大致相同!!
第二种方法用的比较多!!
 
执行效率上的区别吧
 
to:wind28
看到许多实例是第一种用的较多,实质区别应该不是你说的
 
第一个,结构体TSearchRec的实例sc的attr与faDirectory做位逻辑运算,第二个,就是普通的数值判断,因为attr和fadirectory都是integer类型的
 
两个表达式是不同的
第一个如果 sc的attr不等于faDirectory就....
第二个如果 sc的attr等于faDirectory就...
 
沒分別...
 
第一个如果SC.Attr包含faDirectory选项
第二个如果Sc.Atrr只包含faDirectory选项
差在这个只字上,第一个的范围大于第二个。
第一个在Sc.Attr包含faReadOnly,faHidden等情况下也成立,第二个就不成。
如果一个文件夹只读或者隐藏,使用第二判断方式,就不会处理。
 
如果文件夹有faHidden的属性,两个式子就不同了。
 
这种写法在没有集合类型的情况下经常使用,因为一定程度可以表示集合的操作。
那TFont.Style来说。
第一种相当于ftBold in Font.Style,
第二种相当于[ftBold]=Font.Style;
 
谢谢盒子兄。受教了
 
后退
顶部