Entwickler-Ecke
Open Source Projekte - Dateien-Suchprogramm
Wolle92 - Sa 16.06.07 17:33
Titel: Dateien-Suchprogramm
Also ich habe vor allem festgestellt, dass es schneller ist, als die Windows-Suche
Aktuelle Version: 1.1
Veränderungen in Version 1.1
[NEU]Grenze für maximal 4 Zeichen bei der Dateiendung aufgehoben
[NEU]Suche nach einem Teil eines Dateinamens kann jetzt auch nur nach bestimmten Endungen suchen
[NEU]Den Rest habe ich vergessen...
-------------------------------------------------
hui1991 - Sa 16.06.07 18:27
Hi,
Dateiendung auf 4 Begrenzen ist schwachsinn!
Denk mal an tar.gz dateien oder zip oder rar oder exe oder mp3, alle weniger als 4 und dann verlang das 4 Zeichen.
Aktuelles Verzeichnis:
C:\\Dokumente und EInstellungen\...
Mich wundert es überhaupt das er die unterverzeichnisse findet.
naja okay denke nicht das es schneller ist ^^
Sonst ein Funktionsfähiges Programm.
MfG
hui1991
Lannes - Sa 16.06.07 19:18
Hallo,
Wolle92 hat folgendes geschrieben: |
| Also ich habe vor allem festgestellt, dass es schneller ist, als die Windows-Suche |
wer hat zuerst gesucht, Windows oder Dein Programm? :wink:
Wenn Du BeginUpdate und EndUpdate benutzt wird es schneller. Außerdem ist
case auch besser als 3 If-Abfragen, ist aber für die Geschwindigkeit hier unerheblich.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| ListView.Items.BeginUpdate; case ComboBox.ItemIndex of 0 : SucheDir1(Edit1.Text, ShellTreeView1.Path); 1 : SucheDir2(Edit1.Text, ShellTreeView1.Path); 2 : SucheDir3(Edit1.Text, ShellTreeView1.Path); end; ListView.Items.EndUpdate; |
Die Überprüfung der Extension wird in der rekursiven Such-Prozedur immer wieder vorgenommen, das ist doch nicht erforderlich, sie ändert sich doch nicht.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| procedure TForm1.SucheDir3(ext: Str4; pfad: String); var sr: TSearchRec; r: Integer; liNew: TListItem; begin if Pos('.', ext) = 0 then ext := '.' + ext; ext := UpperCase(ext); SucheDir3(ext, pfad + '\' + sr.name) |
Wolle92 - So 17.06.07 07:19
1. Es gibt aber auch Endungen mit 4 Zeichen: html, java...
2. Die Unterordner werden gefunden, weil sobald in den Attributen steht, das das ganze ein Ordner ist, da hinein gegangen wird und da weitergesucht wird, wenn der Ordner durhc ist gehts wieder zurück.
3. Wie sollte ich das Programm denn sonst weitersuchen lassen?
4. Die Feststellung, dass es schneller ist, als die XP-Suche habe ich von einem Freund, der sofort meinte, das meins ja viel schneller ist. Also es geht um die XP-Suche, die Vista-Suche ist schon schneller
Wolle92 - Mo 18.06.07 07:04
Update: Version 1.1
Veränderungen:
[NEU]Grenze für maximal 4 Zeichen bei der Dateiendung aufgehoben
[NEU]Suche nach einem Teil eines Dateinamens kann jetzt auch nur nach bestimmten Endungen suchen
[NEU]Den Rest habe ich vergessen...
Lannes - Mo 18.06.07 09:23
Hallo,
case eingebaut, gut.
Haben der Einbau von BeginUpdate und EndUpdate, sowie das herrauslösen der Überprüfung der Extension aus der rekursiven Funktion, keine Geschwindigkeitsvorteile gebracht?
Oder hat es einen anderen Grund meine Vorschläge nicht in Betracht zu ziehen? :gruebel:
ZeitGeist87 - Mo 18.06.07 09:40
sobald ich mit der windowssuche einmal gesucht hab, ist die beim 2. mal auch schneller, weil alles im gecached ist...
ich bleib bei der windowssuche :)
Wolle92 - Mo 18.06.07 10:25
das kommt bei mir auch noch rein...
Ist ja erst Version 1.1
@Lannes: Ich habs einfach nicht verstanden, wie du das machen willst... Schick mal Quellcode-Ausschnitt, wie du das machen würdest
ZeitGeist87 - Mo 18.06.07 10:29
Wolle92 hat folgendes geschrieben: |
das kommt bei mir auch noch rein...
Ist ja erst Version 1.1
@Lannes: Ich habs einfach nicht verstanden, wie du das machen willst... Schick mal Quellcode-Ausschnitt, wie du das machen würdest |
das is irrelevant, ob das bei dir reinkommt oder nicht :)
das passiert automatisch!
egal ob windowssuche oder dein programm
Wolle92 - Mo 18.06.07 10:33
Achso... dann kommt bei mir wenigstens noch... irgendwas anderes rein, was die Suche schneller machen kann, nen bleibender Index oder so...
Lannes - Mo 18.06.07 23:08
Hallo,
Wolle92 hat folgendes geschrieben: |
| @Lannes: Ich habs einfach nicht verstanden, wie du das machen willst... Schick mal Quellcode-Ausschnitt, wie du das machen würdest |
hab ich schon, :schmoll: etwas genauer hinschauen :mahn: :wink:
Lannes hat folgendes geschrieben: |
Wenn Du BeginUpdate und EndUpdate benutzt wird es schneller. ...
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| ListView.Items.BeginUpdate; case ComboBox.ItemIndex of 0 : SucheDir1(Edit1.Text, ShellTreeView1.Path); 1 : SucheDir2(Edit1.Text, ShellTreeView1.Path); 2 : SucheDir3(Edit1.Text, ShellTreeView1.Path); end; ListView.Items.EndUpdate; | |
Dadurch verhindert man das bei jedem hinzugefügten Item das ListView neu gezeichnet wird.
Zum Thema Überprüfung der Extension:
Die gehighlighten Zeilen lagerst Du in eine Hilffunktion aus.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| procedure TForm1.SucheDir3(ext: Str4; pfad: String); var sr: TSearchRec; r: Integer; liNew: TListItem; begin if Pos('.', ext) = 0 then ext := '.' + ext; ext := UpperCase(ext); SucheDir3(ext, pfad + '\' + sr.name) |
Das sieht dann im groben so aus
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| function HilfsFunc(ext: String): String; begin end;
SucheDir3(HilfsFunc(Edit1.Text), ShellTreeView1.Path); |
So wird die Extension nur einmal beim Aufruf überprüft und nicht bei jeder Rekursion.
//Edit: Ohne Dich jetzt entmutigen zu wollen, wenn Du Dich näher mit dem Thema Dateisuche beschäftigen willst, kann ich Dir das Thema von
Heiko empfehlen:
[Delphi, Win32] SearchTool - schnelles Suchverfahren [
http://www.delphi-forum.de/viewtopic.php?t=48936]
Wolle92 - Di 19.06.07 15:33
Aha... :idea: :idea: :idea: :idea: :idea: :idea: :idea: :idea: :idea: :idea:
Jetzt hab ich verstanden, was du meintest...
Wolle92 - Di 19.06.07 16:13
Aber es ist besser, wenn man es ohne BeginUpdate oder EndUpdate macht, weil so muss der User warten, bis die Suche beendet wurde, wenn man es ohne macht, kann man schon während der Suche Dateien öffnen und Abbrechen
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!