AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) FindFirst und FindNext noch modern? Lieber IShellFolder?
Thema durchsuchen
Ansicht
Themen-Optionen

FindFirst und FindNext noch modern? Lieber IShellFolder?

Ein Thema von a.def · begonnen am 6. Jan 2017 · letzter Beitrag vom 9. Jan 2017
Antwort Antwort
a.def
(Gast)

n/a Beiträge
 
#1

FindFirst und FindNext noch modern? Lieber IShellFolder?

  Alt 6. Jan 2017, 20:09
Ich lese gerade zum ersten mal von IShellFolder und lese auch hier und dort, dass das Iterieren durch Verzeichnisse damit wesentlich schneller sein soll
als mit FindFirst und FindNext.

Ich selber benutze nur FindFirst und FindNext. Es ist lokal sehr schnell. Selbst bei einer halben Millionen Dateien.
Aber wenn ich demselben Code ein Verzeichnis auf meinem gemappten Netzlaufwerk oder einer USB-Festplatte übergebe, dauert das ewig.

Hier soll IShellFolder wohl ebenfalls wesentlich schneller sein.

a) wie kann IShellFolder schneller sein? Die Netzwerkfestplatte kommt ja nicht näher, nur weil ich kein Find mehr benutze
b) wie benutzt man IShellFolder? ich finde leider keinerlei Beispiele.
c) was würdet ihr benutzen?
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#2

AW: FindFirst und FindNext noch modern? Lieber IShellFolder?

  Alt 6. Jan 2017, 20:11
Zitat:
ich finde leider keinerlei Beispiele.
Google sollte unter umständen helfen. (bestimmt nicht versucht).

http://delphi.cjcsoft.net/viewthread.php?tid=48467

gruss
  Mit Zitat antworten Zitat
Benutzerbild von NicoDE
NicoDE

Registriert seit: 16. Jul 2012
Ort: Darmstadt
26 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: FindFirst und FindNext noch modern? Lieber IShellFolder?

  Alt 9. Jan 2017, 20:16
a) wie kann IShellFolder schneller sein?
Wahrscheinlich liefert es weniger Informationen über die Dateiobjekte.
Die Implementierung der COM-Klasse könnte dann (ab Windows 7 / Windows Server 2008 R2) FindFirstFileEx mit FindExInfoBasic und FIND_FIRST_EX_LARGE_FETCH verwenden. Der Unterschied in der Performance liegt hauptsächlich in der fehlenden Ermittlung der alternativen 8.3-Dateinamen.
Nico Bendlin
  Mit Zitat antworten Zitat
Pfaffe

Registriert seit: 29. Jan 2009
297 Beiträge
 
Delphi 12 Athens
 
#4

AW: FindFirst und FindNext noch modern? Lieber IShellFolder?

  Alt 9. Jan 2017, 20:53
Hinweis: Bei den neueren Delphis gibts auch noch:
http://docwiki.embarcadero.com/Libra...GetDirectories
http://docwiki.embarcadero.com/Libra...ctory.GetFiles
http://docwiki.embarcadero.com/CodeE...raion_(Delphi))

Geändert von Pfaffe (10. Jan 2017 um 19:07 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#5

AW: FindFirst und FindNext noch modern? Lieber IShellFolder?

  Alt 9. Jan 2017, 22:35
IShellFolder geht letztendlich auf die selben APIs, wie FindFirstFile.
Durch die zusätzliche Kapselung würde ich aber eher erwarten, dass es nur noch langsamer werden könnte.

NtQueryDirectoryFile
$2B or not $2B
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:16 Uhr.
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