AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Code-Bibliothek Library: Dateien / Laufwerke Delphi FindAllFiles mit Fortschritt
Thema durchsuchen
Ansicht
Themen-Optionen

FindAllFiles mit Fortschritt

Ein Thema von Luckie · begonnen am 6. Sep 2005
Antwort Antwort
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

FindAllFiles mit Fortschritt

  Alt 6. Sep 2005, 08:00
Endlich ist sie da, die langersehnte Dateisuche mit Fortschrittsanzeige.

Erstmal der Code (siehe Anhang, inkl. Demo), dann die Erklärungen.

Erstmal zur Prozedur FindAllFiles: Ich wollte möglichst ohne die Unit Classes auskommen und habe mich deshalb entschieden die Dateien nicht in eine StringListe zu schreiben, sondern eine Nachricht zu schicken, welche den Dateinamen bzw. den Ordner und den wievielten Ordner enthält.

Die Idee: Will man den Fortschritt anzeigen, muss man irgendwie einen Maximalwert haben. Ich habe mich dafür entschieden die Anzahl der Ordner zu nehmen. Die Anzahl der Ordner wird mit der Prozedur CountFolders ermittelt und in der globalen Variable CntFolders gespeichert. In der Prozedur FindAllFiles wird nun bei jedem gefundenen Ordner die Variavle NumFolder erhöht, damit man weiß, wie viele Ordner man schon durchsucht hat.

Da ich mit globalen Variablen arbeite, ist es wichtig diese entsprechend zu initialisieren. Dies geschieht mit der Prozedur FindAllFilesInit. Hier werden die Variablen mit 0 initialisiert. Es ist also erstmal wichtig diese Prozedur aufzurufen und dann mit CountFolders die Anzahl der Ordner zu ermitteln, wenn man einen Fortschritt haben will. Durchsucht man nicht gerade die ganze Systempartition, ist der Performanceverlust eigentlich noch akzeptabel. Natürlich kann man die Prozedur FindAllFiles auch nutzen ohne den Fortschritt anzuzeigen, wenn man auf die Performance wertlegt.

Legt man keinen Wert darauf nonVCL kompatibel zu sein, kann man natürlich alles in eine Klasse packen und elegant mit Eregnissen arbeiten.

Auf die Idee bin ich gekommen, als ich mich gefragt habe, wie TuneupUtilities das macht und ich gesehen habe, wie Tuneup Utilities vor der eigentlichen Suche in einem Label "Initialisieren..." anzeigt. Da habe ich mich gefagt, "was initialisiert der da wohl?" Nun ja, ich habe mir dann überlegt, dass er eigentlich nur einen maximal Wert für den Fortschritt ermitteln kann in dieser Zeit.

Sollte jemand eine bessere Idee haben, dann bin ich für jeden Verbesserungsvorschlag offen.

Im Anhang noch ein Demo Projekt.
Angehängte Dateien
Dateityp: zip findallfilesprogress_demo_203.zip (5,2 KB, 610x aufgerufen)
Michael
Ein Teil meines Codes würde euch verunsichern.

Geändert von TBx (15. Okt 2011 um 14:08 Uhr)
  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 16:13 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