Pregunta

Durante la búsqueda de archivos con FindFirst () consigo un valor de atributo en el campo TSearchRec.Attr de 2080. No se especifica en la ayuda, ya que hay sólo estos valores disponibles y ninguna combinación de ellos rinde 2080:

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

¿Alguien sabe qué medios 2080 y por qué me sale que el valor del atributo? El sistema operativo está incrustado XP.

¿Fue útil?

Solución

Resulta que el archivo encontrado por FindFirst fue comprimido () y por lo tanto tenía el conjunto de bits comprimido. Me tomó un tiempo para averiguar y no pude encontrar una referencia en la web que indica el valor real de TSearchRec.Attr cuando se establece el bit comprimido. Unclicking "Comprimir archivos" en los archivos de propiedades avanzadas resolvieron el problema.

Otros consejos

atributos en TSearchRec mapa directamente a la archivos de Windows atributos utiliza con el TWin32FindData registro de FindFirstFile .

En hexagonal (siempre representar campos de bits en hexadecimal, no decimal), 2080 es $ 0820, donde está claro que hay dos bits puestos. El bit más baja corresponde a File_Attribute_Archive, o Delphi de faArchive , y el bit superior corresponde a File_Attribute_Compressed. Que no tiene equivalente en las unidades que vienen con Delphi, pero se puede utilizar el símbolo JclFileUtils.faCompressed de la JCL .

En la unidad JclFileUtils del Código de la Biblioteca Jedi que encontré:

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

Si 2080 es en hexadecimal entonces eso es todo.

Mire también en: http: //www.tek-tips .com / viewthread.cfm? qid = 1543818 & page = 9

EDIT: Mientras 2080 decimal ID, y 2080 Dec = 820 hex a continuación atributos son combinación de:

 faArchive     = $00000020;
 faCompressed  = $00000800;

Esto extraerá el bit faDirectory y usted no tiene que preocuparse por el bit de deformación permanente por compresión o no.

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

begin 
     .......
end;
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top