FindFirst()报告的奇怪属性值,Attr = 2080

时间:2010-01-05 12:19:41

标签: delphi delphi-2006 file-attributes

使用FindFirst()搜索文件时,我在TSearchRec.Attr字段中得到一个2080的属性值。它没有在帮助中指定,因为只有这些值可用且没有它们的组合产生2080:

1 faReadOnly
2 fahidden
4 faSysFile
8 faVolumeID
16目录
32 faArchive
64 faSymLink
71 faAnyFile

有谁知道2080的含义以及我获得该属性值的原因?操作系统是XP嵌入式。

4 个答案:

答案 0 :(得分:6)

事实证明,FindFirst()找到的文件已被压缩,因此设置了压缩位。我花了一段时间才弄清楚,当设置压缩位时,我无法在网上找到陈述TSearchRec.Attr实际值的引用。在文件高级属性中取消选中“压缩文件”就可以了。

答案 1 :(得分:5)

TSearchRec中的属性直接映射到Windows file attributesTWin32FindData记录中使用的FindFirstFile

在十六进制中(总是以十六进制呈现位字段,而不是十进制),2080是$ 0820,其中很明显有两个位设置。低位对应于File_Attribute_Archive或Delphi的faArchive,高位对应于File_Attribute_Compressed。它与Delphi附带的单元没有对应关系,但您可以使用JclFileUtils.faCompressed中的JCL符号。

答案 2 :(得分:3)

在Jedi Code Library的JclFileUtils单元中,我发现:

faNormalFile        = $00000080;
...
faNotContentIndexed = $00002000;

如果2080是十六进制,那就是它。

还请看:http://www.tek-tips.com/viewthread.cfm?qid=1543818&page=9

编辑: 虽然2080 id十进制,2080 dec = 820 hex,但属性是:

的组合
 faArchive     = $00000020;
 faCompressed  = $00000800;

答案 3 :(得分:1)

这将提取faDirectory位,您不必担心压缩位设置。

if ((sr.Attr AND faDirectory) <> 0) then

begin 
     .......
end;
相关问题