不思議な属性値が報告されFindFirst()、Attr=2080
-
18-09-2019 - |
質問
する場合のファイルはFindFirst()または属性値のTSearchRec.Attrの分野2080.ではないで指定されることが可能となっており、あこれらの値を利用可能な組み合わせて利2080:
1faReadOnly
2faHidden
4faSysFile
8faVolumeID
16faDirectory
32faArchive
64faSymLink
71faAnyFile
なんだろうけど、日本人に何2080とは、なぜ私が取得する属性。OSは、XPます。
解決
これは、FindFirst関数によって見つかったファイル()が圧縮され、これ圧縮ビットセットを持っていたことが判明します。把握するために、私は、圧縮されたビットがセットされているTSearchRec.Attrの実際の値を述べたウェブ上の参照を見つけることができなかった私にしばらく時間がかかりました。ファイル内の「ファイルを圧縮」Unclickingは性質がトリックをした高度ます。
他のヒント
属性 TSearchRec
地図に直接 Windowsのファイル属性 使用する TWin32FindData
記録から FindFirstFile
.
に六角レンチ(いを描画するビット分野の六角レンチ、小数),2080は$0820場であるビットセットです。下位ビットに対応する File_Attribute_Archive
, やDelphiの faArchive
, の上位ビットに対応する File_Attribute_Compressed
.でしかない単位のいらっしゃるインが利用できる JclFileUtils.faCompressed
シンボルからの JCL.
JclFileUtils
ユニットでは私が見つけた
faNormalFile = $00000080;
...
faNotContentIndexed = $00002000;
2080ヘクス内にある場合は、これがそれです。
ます。http://www.tek-tipsでまた見て.COM / viewthread.cfm?QID = 1543818&ページ= 9
の編集:
:2080のID小数、および2080年12月= 820ヘクスながら属性はの組み合わせであります faArchive = $00000020;
faCompressed = $00000800;
このはfaDirectoryビットを抽出し、あなたが設定されたりしませ圧縮ビットを心配する必要はいけない。
if ((sr.Attr AND faDirectory) <> 0) then
begin
.......
end;