Entwickler-Ecke

Dateizugriff - Verzeichnisgröße ermitteln! ohne FindFirst etc.?


Mordilion - Mi 17.05.06 16:21
Titel: Verzeichnisgröße ermitteln! ohne FindFirst etc.?
Hallo,

ich hoffe mir kann einer helfen, denn ich suche mich noch tot.

Es geht darum, das ich gerne die Größe eines Verzeichnis ermitteln möchte und das OHNE FindFirst. Gibt es dafür vielleciht eine API oder ähnliches?

Manche wollen bestimmt nun wissen wieso ich das nicht mit FindFirst machen möchte, nunja es ist halt so wenn ich einen Ordner habe der einen Inhalt von 40GB so braucht die Methode mit FindFirst sehr lange und ich möchte das irgendwie schneller haben, denn wenn ich mir die Eigenschaften von einem Ordner im Explorer anschaue, geht das schneller als die Methode mit FindFirst!


Gruß
Mordi


Kroko - Mi 17.05.06 20:38

(a) glaube ich nicht, dass es über Eigenschaften des Ordners schneller ist, maximal der Geschwindigkeitsvorteil, das das (oder Teiles des) Verzeichnis bereits im Cache liegen
(b) rufe mal die Methode mit FindFirst 2x hintereinander auf und messe die Zeit, die nimmt beim zweiten Mal erheblich ab
(c) ich kenne keine Fkt, die dies tut :cry:


Mordilion - Mi 17.05.06 20:58

Ja ok, aber kann man die methode mit FindFirst beschleunigen, so das es wenigstens nicht ganz so lange dauert?

Was ich mir vorstellen könnte wäre das mit mehreren Threads zu machen, aber dann ziehe ich wohl die ganze auslastung auf mein Programm oder?


Gausi - Mi 17.05.06 21:05

user profile iconHeiko hat da mal was gemacht, und entwickelt da grade weiter dran rum. *klick* [http://www.delphi-forum.de/viewtopic.php?t=48936&highlight=searchtool]. Dort ist auch ein Link zu user profile iconLuckies DriveTools [http://www.delphi-forum.de/viewtopic.php?t=33882&start=0&postdays=0&postorder=asc&highlight=drivetools], was wohl die Basis für SearchTools war.


Mordilion - Mi 17.05.06 21:21

Cool, danke!

hatte das zwar FAST genau so wie dort, das einzige was ich nicht hatte war das ZeroMemory(@lpFindFileData, SizeOf(lpFindFileData)); am anfang der Funktion zu machen. Dadurch wurde die methode sehr stark beschleunigt!


digi_c - Do 18.05.06 08:09

Ah interessant, hatte vor kurzem mir die selben Gedanken gemacht und ahnte schon, dass man nicht um FindFirst nicht rum kommt, was man ja bei der Ermittlung der Ordnergröße im Explorer sehen kann.