Frage

Wenn Sie nach Dateien mit Findfirst Suche () Ich erhalte eine Attributwert im TSearchRec.Attr Feld von 2080. Es ist nicht in der Hilfe angegeben wird, da es nur diese Werte verfügbar und keine Kombination von ihnen ergibt 2080:

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

Wer weiß, was 2080 bedeutet und warum ich diesen Attributwert bekommen? Das Betriebssystem ist XP embedded.

War es hilfreich?

Lösung

Es stellt sich heraus, dass die Datei von Findfirst gefunden () komprimiert wurde und somit hatte die komprimierte Bit gesetzt. Dauerte eine Weile, um herauszufinden, und ich konnte nicht einen Verweis auf dem Netz, das den tatsächlichen Wert der TSearchRec.Attr angegeben, wenn das komprimierte Bit gesetzt finden. Unclicking "Compress-Datei" in den Dateien erweiterten Eigenschaften hat der Trick.

Andere Tipps

Attribute in TSearchRec Karte direkt an den Windows-Datei mit der TWin32FindData Rekord von FindFirstFile .

In hex (immer Bit-Felder in hex machen, nicht dezimal), 2080 ist $ 0820, wo es klar ist, gibt es zwei Bits ab. Das untere Bit entspricht File_Attribute_Archive oder Delphi faArchive und das obere Bit entspricht File_Attribute_Compressed. Es hat keine Entsprechung in den Einheiten, die mit Delphi kommen, aber Sie können den JclFileUtils.faCompressed Symbol aus dem JCL .

In JclFileUtils Einheit von Jedi Code Library ich gefunden:

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

Wenn 2080 ist in hex dann das ist es.

Schauen Sie auch unter: http: //www.tek-tips .com / viewthread.cfm? qid = 1543818 & page = 9

EDIT: Während 2080 id dezimal und 2080 dez = 820 hex dann sind Attribute Kombination aus:

 faArchive     = $00000020;
 faCompressed  = $00000800;

Dies wird die faDirectory Bit extrahieren und Sie nicht über die Kompression etwas kümmern gesetzt ist oder nicht.

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

begin 
     .......
end;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top