看板 Visual_Basic 關於我們 聯絡資訊
※ 引述《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
glovev:了解 謝謝cole~解除了我心中疑惑 07/20 01:26