奇怪的属性价值的报告FindFirst(),Attr=2080
-
18-09-2019 - |
题
当搜索文件FindFirst()我得到一个属性的价值在TSearchRec.Attr领域2080.它不是指定的帮助,因为只有这些数值可用,没有结合它们的产量2080:
1faReadOnly
2faHidden
4faSysFile
8faVolumeID
16fa目录
32faArchive
64faSymLink
71faAnyFile
任何人都不会知道什么2080意味着什么和为什么我得到这一属性的价值?该系统XP嵌入。
解决方案
事实证明,在FindFirst找到的文件()被压缩,因此具有经压缩的比特集。我花了一段时间才能找出和我找不到当压缩位时,它说TSearchRec.Attr的实际价值在网络上的参考。 Unclicking“压缩文件”,在文件的高级属性并获得成功。
其他提示
属性 TSearchRec
地图直接向 Windows文件的属性 使用与 TWin32FindData
从记录 FindFirstFile
.
在hex(始终呈现位域在六角,不是十进制),2080美元0820,在这里很明显有两个位置。下位相对应 File_Attribute_Archive
, 或德尔福 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 DEC = 820十六进制然后属性的组合:
faArchive = $00000020;
faCompressed = $00000800;
这将提取faDirectory位,你不要担心设置或不压缩位。
if ((sr.Attr AND faDirectory) <> 0) then
begin
.......
end;