Domanda

Durante la ricerca di file con FindFirst () ottengo un valore di attributo nel campo TSearchRec.Attr del 2080. E non è specificato nella guida in quanto ci sono solo questi valori disponibili e nessuna combinazione di questi rendimenti 2080:

1 faReadOnly
2 faHidden
4 faSysFile
8 faVolumeID
16 faDirectory
32 faArchive
64 faSymLink
71 faAnyFile

Qualcuno sa cosa significa 2080 e perché ottengo che il valore di attributo? Il sistema operativo è XP embedded.

È stato utile?

Soluzione

Si scopre che il file trovato da FindFirst () è stato compressa e quindi aveva impostato il bit compressi. Mi ci volle un po 'per capire e non sono riuscito a trovare un punto di riferimento sul web che ha dichiarato il valore effettivo della TSearchRec.Attr quando viene impostato il bit compressi. Cliccando di "File Compress" nei file avanzata proprietà ha fatto il trucco.

Altri suggerimenti

TSearchRec mappa direttamente al file di Windows attributi utilizzato con il TWin32FindData record da FindFirstFile .

In esagonale (sempre rendere i campi di bit in esadecimale, decimale non), 2080 è di $ 0820, in cui è chiaro che ci sono due bit impostati. Il bit inferiore corrisponde File_Attribute_Archive, o Delphi di faArchive , e il bit superiore corrisponde File_Attribute_Compressed. Essa non ha equivalenti nelle unità che vengono con Delphi, ma è possibile utilizzare il JclFileUtils.faCompressed simbolo dal JCL .

In unità JclFileUtils da Jedi Code Library che ho trovato:

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

Se 2080 è in esadecimale, allora questo è.

Si veda anche: http: //www.tek-tips .com / viewthread.cfm? qid = 1543818 & page = 9

EDIT: Mentre 2080 id decimale e 2080 Dec = 820 hex quindi attributi sono combinazione di:

 faArchive     = $00000020;
 faCompressed  = $00000800;

Questo estrarrà il bit faDirectory e non dovete preoccuparvi di bit compression set o meno.

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

begin 
     .......
end;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top