[Erledigt] 50 aktuellste Dateien in einem Verzeichnis suchen

Antworten
Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

[Erledigt] 50 aktuellste Dateien in einem Verzeichnis suchen

Beitrag von Michl »

Hallo Allerseits,

ich habe ein Verzeichnis, in das von mehreren Programmen Dateien gespeichert werden. Nun würde ich immer gern die 50 aktuellsten Dateien in meinem Programm zur Ansicht darstellen. Zur Zeit lade ich mit FindFirst und FindNext alle Dateien in eine 50 Elemente lange Liste. Sobald ein Datum aktueller ist, wird die Liste entsprechend angepasst.

Nun würde ich gern das Ganze etwas beschleunigen, da bei mehreren Tausend Dateien die Durchsicht etwas dauert. Daher meine Frage: Ist es möglich FindFirst/-next so zu beeinflussen, dass direkt die aktuellsten Files als erstes geladen werden (oder weiss jemand, ob ich in der FindFirst-Source das Verhalten umstellen kann? Beim debuggen komme ich letztlich zu einem Hinweis >FindFirstFile is a Win32 Call<, was mir nicht weiter hilft)?

Ich nutze Win7

Danke

Michael
Zuletzt geändert von Michl am Mi 27. Nov 2013, 09:31, insgesamt 1-mal geändert.

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 

Benutzeravatar
theo
Beiträge: 10498
Registriert: Mo 11. Sep 2006, 19:01

Re: Dateien suchen

Beitrag von theo »

Michl hat geschrieben: Beim debuggen komme ich letztlich zu einem Hinweis >FindFirstFile is a Win32 Call<, was mir nicht weiter hilft)?


Warum hilft dir das nicht weiter?
Das bedeutet, dass man sich bei Microsoft schlau machen kann, wie das funktioniert.
http://msdn.microsoft.com/en-us/library ... 85%29.aspx
Vllt findest du da auch eine weiterführende Fuktion wie
http://msdn.microsoft.com/en-us/library ... 85%29.aspx
Ich weiss aber nicht, ob die kann was du möchtest.

Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

Re: Dateien suchen

Beitrag von Michl »

Danke Theo für die Links! Ich habe mich schon ein bischen reingelesen, mal sehen, ob ich da weiter komme.

Eigentlich hatte ich gehofft, dass mein Ansatz falsch wäre oder es dafür mir unbekannte Einstellungen oder andere Methoden gäbe :wink:

Na mal schauen,

viele Grüße!

[Edit] Eine Suche beginnend mit dem jüngsten Datum scheint nicht möglich, so wie es aussieht stellt so ein Vorgehen das BS nicht zur Verfügung. Ich habe meinen Code noch etwas optimiert. Das Heraussuchen der 50 jüngsten Dateien aus über 20000 Dateien dauert nun interpoliert unter 40ms. ...wird wohl ausreichend sein müssen...

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 

Antworten