카테고리 없음

[델파이] FindFirst ()에서보고 한 이상한 속성 값, Attr = 2080

행복을전해요 2021. 1. 8. 08:21

FindFirst ()에서 찾은 파일이 압축되어 압축 된 비트 세트가있는 것으로 나타났습니다. 알아내는 데 시간이 좀 걸렸고 압축 된 비트가 설정되었을 때 TSearchRec.Attr의 실제 값을 명시한 참조를 웹에서 찾을 수 없었습니다. 파일 고급 속성에서 "파일 압축"을 클릭 해제하면 트릭이 발생했습니다.

-------------------

의 속성은 레코드 와 함께 사용되는 Windows 파일 속성에TSearchRec 직접 매핑됩니다 .TWin32FindDataFindFirstFile

16 진수 (항상 10 진수가 아닌 16 진수로 비트 필드를 렌더링)에서 2080은 $ 0820이며 2 비트가 설정되어 있음이 분명합니다. 하위 비트는 File_Attribute_Archive, 또는 Delphi에 faArchive해당하고 상위 비트는에 해당합니다 File_Attribute_Compressed. Delphi와 함께 제공되는 단위에는 해당되지 않지만 JCLJclFileUtils.faCompressed기호를 사용할 수 있습니다 .

-------------------

에서 JclFileUtils제다이 코드 라이브러리 I에서 단위 발견

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

2080이 16 진수이면 이것이 바로 그것입니다.

참조 : http://www.tek-tips.com/viewthread.cfm?qid=1543818&page=9

편집 : 2080 id 십진수 및 2080 dec = 820 hex 동안 속성은 다음의 조합입니다.

 faArchive     = $00000020;
 faCompressed  = $00000800;
 
-------------------

이렇게하면 faDirectory 비트가 추출되며 압축 비트 설정 여부에 대해 걱정할 필요가 없습니다.

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

begin 
     .......
     end;
     


출처
https://stackoverflow.com/questions/2005924