Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi faAnyFile - faDirectory findet keine Dateien mit Attr. e,c (https://www.delphipraxis.net/126909-faanyfile-fadirectory-findet-keine-dateien-mit-attr-e-c.html)

jfheins 5. Jan 2009 11:12

Re: faAnyFile - faDirectory findet keine Dateien mit Attr. e
 
Bist du dir sicher dass es nicht mit den Attributen zusammenhängt? Wie hast du das getestet? (Archiv-Attribut vielleicht? ntfs-Links?)

Um sozusagen alles was kreucht und fleucht einzufangen kannst du ja mal das hier probieren:

Delphi-Quellcode:
const
faNewAnyFileEx = $00017FFF; // Wirklich alles

PeterPanino 5. Jan 2009 11:34

Re: faAnyFile - faDirectory findet keine Dateien mit Attr. e
 
Ich glaub ich werde verrückt! Mit faNewAnyFileEx werden jetzt zwar alle Dateien gefunden, aber jetzt ist die Zahl der gefundenen Dateien zu hoch!!!!!

In dem Testordner befinden sich 34 Dateien (nein, es sind WIRKLICH keine versteckten Dateien in dem Ordner), aber faNewAnyFileEx findet jetzt 36 (!) Dateien!! Und wenn ich in dem Testordner einen neuen leeren Ordner erzeuge, werden gleich 3 Dateien mehr angezeigt, also 39 !!!

PeterPanino 5. Jan 2009 11:42

Re: faAnyFile - faDirectory findet keine Dateien mit Attr. e
 
Aha, die jeweils 2 zusätzlichen Dateien sind "." und "..". Deswegen werden beim Erzeugen eines leeren Ordners gleich 3 neue Dateien gezählt.

Wie bist du übrigens auf den Wert von faNewAnyFileEx gekommen?

PeterPanino 5. Jan 2009 11:49

Re: faAnyFile - faDirectory findet keine Dateien mit Attr. e
 
Die ultimative Lösung scheint faNewAnyFileEx and not faDirectory zu sein: Dabei werden alle Dateien gefunden und sowohl richtige Ordner als auch "." und ".." ausgesiebt.

Aber wieso faNewAnyFile (ohne Ex) zwar die komprimierten und verschlüsselten Dateien findet, jedoch die vorher genannten Dateien nicht, ist mir immer noch ein Rätsel!

jfheins 5. Jan 2009 12:29

Re: faAnyFile - faDirectory findet keine Dateien mit Attr. e
 
nun ja, faAnyFile ist ja gleich $0000003F;

Das heißt, faAnyFile ist eine Kombination der folgenden:

faReadOnly = $00000001;
faHidden = $00000002;
faSysFile = $00000004;
faVolumeID = $00000008;
faDirectory = $00000010;
faArchive = $00000020;

Die (und nur die) werden also gefunden.

Das faNewAnyFile was ich zuerst vorgeschlagen habe, fügt zu diesem Set noch die Flags "Compressed" und "Encrypted" hinzu, sodass diese beiden Arten zusätzlich gefunden werden.

Das faNewAnyFileEx = $00017FFF; ist nun eine Kombination aus allen Flags, die ich im msdn finden konnte.

Es findet also alles was von findfirstfile zurückgegeben wird und seien es virtuelle oder eine offline-Datei.

PeterPanino 5. Jan 2009 13:02

Re: faAnyFile - faDirectory findet keine Dateien mit Attr. e
 
Danke, jfheins. Wie kann ich herausfinden, welche von den auf der msdn-Seite aufgelisteten Attributen eine Datei hat? Gibt es dafür ein fertiges Utility? Dann könnte ich nämlich herausfinden, welches Attribut dafür verantwortlich ist, dass faNewAnyFile bestimmte Dateien nicht gefunden hat.

jfheins 5. Jan 2009 13:18

Re: faAnyFile - faDirectory findet keine Dateien mit Attr. e
 
GetFileAttributes(dateiname) liefert dir die Attribute einer Datei als DWORD, d.h. als Bitmaske ;)

DeddyH 5. Jan 2009 13:19

Re: faAnyFile - faDirectory findet keine Dateien mit Attr. e
 
Ansonsten faAnyFile beiseite legen und die gesuchten Attribute verodern.

PeterPanino 5. Jan 2009 22:13

Re: faAnyFile - faDirectory findet keine Dateien mit Attr. e
 
Ich habe jetzt ein kleines Tool geschrieben, mit dem man die erweiterten Attribute anzeigen kann:

http://resource.dopus.com/viewtopic.php?p=48003

Wie man auf dem folgenden Screenshot sieht, haben alle Laufwerks-Wurzelverzeichnisse (auch C:, D: usw.) das Hidden-Attribut! Kann mir das mal jemand erklären?

http://img183.imageshack.us/img183/6...iverootkk2.gif

Christian Seehase 5. Jan 2009 22:29

Re: faAnyFile - faDirectory findet keine Dateien mit Attr. e
 
Moin Peter,

Attribute muss man immer im Zusammenhang sehen, da das OS die Bits für die Attribute nicht immer gleich verwendet.
Wofür jetzt das Hidden-Attribut bei Laufwerksbuchstaben verwendet wird, weiss ich allerdings auch nicht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:07 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz