分類 | 分類/ファイル(nakofile.dll)/ファイル情報 |
種類 | 命令 |
引数 | {=?}Fの |
説明 | ファイルFの属性を取得する |
識別 | id:627 |
返り値は整数で、どのような属性かを調べるためには、「~属性」という名前のシステム変数を用います。例えば、ファイルがアーカイブ属性であることを確認するには、AND演算子&&を用いて、以下のようにします。
Fのファイル属性取得 もしそれ&&アーカイブ属性ならば F&『はアーカイブ属性です。』と言う
「~属性」という名前のシステム変数については、下記「関係する命令」を参照してください。
ファイル属性の整数値は、8桁の2進数で考えると分かりやすくなります(なお8桁の2進数は、16進数では2桁です)。以下に、各システム変数の定義値(16進数)と、それを2進表現したものを表にして示します。いずれも2のべき乗の値、つまり1のビットが1つしかないような数で定義されていることが分かります。
システム変数名 | 定義値(16進数) | 2進数 |
---|---|---|
読み込み専用属性 | $1 | 00000001 |
隠しファイル属性 | $2 | 00000010 |
システムファイル属性 | $4 | 00000100 |
ディレクトリ属性 | $10 | 00010000 |
アーカイブ属性 | $20 | 00100000 |
ノーマル属性 | $80 | 10000000 |
そして、ファイルが属性を複数持つ場合、そのファイル属性値は対応する値の論理和(OR)を取り表現します。例えば読み込み専用・アーカイブ属性のファイルの場合、読み込み専用属性||アーカイブ属性 = $1+$20 = $21 = 33で、ファイル属性取得の結果は33という数になります。
この値と、調べたい属性とで論理積(AND)を取ってみます。アーカイブ属性を持つか調べる場合、33&&アーカイブ属性 = $21&&$20 = $20 = 32 となります。なでしこでは、もし~構文で判定式が0以外の値の場合は、「真」だと見なされます。よって、32は0ではないので、このファイルはアーカイブ属性を持つということが分かりました。一方、システムファイル属性か調べる場合ならば、33&&システムファイル属性 = $21&&$04 = 0なので、無事システムファイルではないと判定できます。