Einzelnen Beitrag anzeigen

Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#1

FindFirstFileEx

  Alt 25. Mai 2011, 20:48
Hallo,

ich habe bereits hier und auch in einer Suchmaschine nach FindFirstFileEx gesucht. In Bezug auf Delphi aber nichts gefunden.

Ich möchte in einem zeitkritischen Programm gern ausschließlich nach Verzeichnissen suchen über die API. Ich habe in SysUtils bereits gesehen, dass einfach alles gelesen und erst danach gefiltert wird. Auch mit FindFirstFile , welches eben in SysUtils.FindFirst genutzt wird, kann man nicht im Vorfeld filtern. Die Nutzer werden insoweit nur "geblendet", als sich SysUtils um das Filtern kümmert <- aber nachträglich.
So bin ich auf MSDN-Library durchsuchenFindFirstFileEx gestoßen. Über die Parameter fInfoLevelId kann man mitteilen, dass man nur das nötigste wissen will und über fSearchOp soll man laut MSDN nur Directories zurück bekommen; allerdings steht dort auch, dass man keine Meldung bekommt, falls das Dateisystem dies nicht unterstützt. Schließlich soll man über FIND_FIRST_EX_LARGE_FETCH die Suche beschleunigen können.

Nun meine Fragen:
1. In Windows.TFindexInfoLevels sind nur 2 statt der 3 bei MSDN ausgewiesenen Werte deklariert. FindExInfoBasic fehlt dort, was am performantesten sein soll. Kann man das einfach so (nach)deklarieren? Falls ja, wie?
2. Unter Windows.TFindexSearchOps gibt es zwar FindExSearchLimitToDirectories . Das scheint aber wirkungslos zu sein. Es wird trotzdem jeder Eintrag inkl. Dateien angezeigt. Welche Dateisysteme außer NTFS gibt es denn noch? Unterstützt NTFS das nicht? Falls doch, wie bekommen ich heraus, ob die konkrete Partition mit NTFS es unterstützt?
3. FIND_FIRST_EX_LARGE_FETCH ist - zumindest in der Windows.pas - nicht deklariert. Laut MSDN hat es den Wert 2. Wenn ich das nachträglich deklariere, liefert mir GetLastError aber "Falscher Parameter". Wo liegt hier mein Denkfehler?

Den Quellcode habe ich beigefügt.

Gruß, Alex

P.S. Bitte nicht wundern! Ich habe alles selbst deklariert, weil in TurboDelphi z.B. der Rückgabewert für FindFirstFileEx fälschlich als Bool deklariert und noch mehr Fehler drin waren.
Angehängte Dateien
Dateityp: zip FindFirstFileEx_p.zip (2,0 KB, 73x aufgerufen)
Alex Winzer
  Mit Zitat antworten Zitat