推 glovev:了解 謝謝cole~解除了我心中疑惑 07/20 01:26
※ 引述《glovev (阿章)》之銘言:
: Dim fileattr As FileAttribute
: fileattr = GetAttr(TextBox1.Text)
: If (fileattr And FileAttribute.Directory) = FileAttribute.Directory Then
: out &= "這是目錄" & vbNewLine
: 請問if的敘述為什麼要用And來做判斷 ,不能直接用fileattr=fileAttribute某個
: 判斷式來完成這個敘述嗎
這邊的 And 不是 Logical AND 而是 Bitwise AND~
這是一種利用一個或多個bit來標記(flag)屬性的技巧.
例如:用 bit0為1表示他是目錄, bit1為1表示他是唯讀, bit2為1表示他被加密...
而 FileAttribute.Direcotr 的值是 0000 0001 (二進位)
所以把兩個東西做 And 位元運算:
fileattr: 0000 0111
Directory: 0000 0001
結果: 0000 0001
就會得到 Direcotry 本身. 如此就可以判斷他是否為目錄,
同理可以用來檢查他是否為 加密、壓解、唯讀、隱藏等等..
有時會單用是否大於零來判斷 (.... And ...) > 0
不過這種方式不適於多bit的flag (比如說 Dirctory是 0000 0011 之類)
既然文件沒特別提, 所以用 ( ... and Flag) = Flag 來判斷會是比較保險的做法
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.139.143.118