• ベストアンサー

フォルダの属性について

お世話になっております。 現在、WindowsXP(SP2)、VisualBasic6.0(SP5)の環境で開発中です。 Attributesプロパティを使って、フォルダの属性を調べたところ、「48」という値が返って来ました。 しかし、HELPには、「48」という値のものがありません。 この値は何を現しているのでしょうか? 実際にチェックしたフォルダのパスは下記のようになっています。  \\マシン名\drv_c\AAA\BB\BB\01  (「01」もフォルダです。) 御存知の方がいらっしゃいましたら教えてください。 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • gungnir7
  • ベストアンサー率43% (1124/2579)
回答No.3

他の方のように48=32+16が正解です。 2進数(2のべき乗)というのはこういう用法で便利なのですよ。 例えば1、2、4、8とあります。 すると1~15の数字は全て1、2、4、8を1回ずつ足して表現できます。 そして、それは必ず1組しかできません。 1=1 2=2 3=1+2 4=4 5=1+4 6=2+4 7=1+2+4・・・15=1+2+4+8 この性質を利用して2のべき乗に数値を定義し、 それを加算法で表現すれば、絶対に重複のない固有の設定ができます。 この用法はコンピュータの世界でたまに見かけますので (有名どころはMessagebox) 覚えておいて損はないでしょう。

bou7
質問者

お礼

回答ありがとうございます。 HELPにも「次に示す定数の値または複数に組み合わせた定数の値の和を指定できます」と書いてありましたね。 理解不足でした。 2進数についても良く分かりました。 どうもありがとうございました。

その他の回答 (2)

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.2

こんにちは。KenKen_SP です。 Directory Or Archive ---> 論理和 48 ということです。 ビット演算について調べて下さい。 各ビットを取り出すにはこんな感じ。 Sub Sample()   Dim lngVal As Long      lngVal = 48 ' 調べる値      If lngVal And 0 Then Debug.Print "Normal"   If lngVal And 1 Then Debug.Print "ReadOnly"   If lngVal And 2 Then Debug.Print "Hidden"   If lngVal And 4 Then Debug.Print "System"   If lngVal And 8 Then Debug.Print "Volume"   If lngVal And 16 Then Debug.Print "Directory"   If lngVal And 32 Then Debug.Print "Archive"   If lngVal And 64 Then Debug.Print "Compressed" End Sub 結果 (48 and 16) と (48 and 32) のみ True になりますので、 Directory + Archive 属性だということが分かります。

bou7
質問者

お礼

回答ありがとうございます。 HELPにも「次に示す定数の値または複数に組み合わせた定数の値の和を指定できます」と書いてありましたね。 理解不足でした。 良く分かりました。 ありがとうございました。

回答No.1

自信ないけど 48 = 32 + 16で考えろって事じゃないの? ファイルが前回のバックアップ以降に変更されているフォルダって事で。

bou7
質問者

お礼

足し算って事なんですね。 回答、ありがとうございました。

関連するQ&A