Autor |
Beitrag |
Wolle92
      
Beiträge: 1296
Windows Vista Home Premium
Delphi 7 PE, Delphi 7 Portable, bald C++ & DirectX
|
Verfasst: Sa 16.06.07 18:33
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...
-------------------------------------------------
Einloggen, um Attachments anzusehen!
Zuletzt bearbeitet von Wolle92 am Mo 18.06.07 12:01, insgesamt 3-mal bearbeitet
|
|
hui1991
      
Beiträge: 433
Windows XP, WIndows Vista
Turbo Delphi Explorer| Delphi, PHP,Blitzbasic
|
Verfasst: Sa 16.06.07 19: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
      
Beiträge: 2352
Erhaltene Danke: 4
Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
|
Verfasst: Sa 16.06.07 20: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?
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) |
_________________ MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
|
|
Wolle92 
      
Beiträge: 1296
Windows Vista Home Premium
Delphi 7 PE, Delphi 7 Portable, bald C++ & DirectX
|
Verfasst: So 17.06.07 08: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 
      
Beiträge: 1296
Windows Vista Home Premium
Delphi 7 PE, Delphi 7 Portable, bald C++ & DirectX
|
Verfasst: Mo 18.06.07 08: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
      
Beiträge: 2352
Erhaltene Danke: 4
Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
|
Verfasst: Mo 18.06.07 10: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? 
_________________ MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
|
|
ZeitGeist87
      
Beiträge: 1593
Erhaltene Danke: 20
Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
|
Verfasst: Mo 18.06.07 10: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 
_________________ Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
|
|
Wolle92 
      
Beiträge: 1296
Windows Vista Home Premium
Delphi 7 PE, Delphi 7 Portable, bald C++ & DirectX
|
Verfasst: Mo 18.06.07 11: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
      
Beiträge: 1593
Erhaltene Danke: 20
Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
|
Verfasst: Mo 18.06.07 11: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
_________________ Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
|
|
Wolle92 
      
Beiträge: 1296
Windows Vista Home Premium
Delphi 7 PE, Delphi 7 Portable, bald C++ & DirectX
|
Verfasst: Mo 18.06.07 11:33
Achso... dann kommt bei mir wenigstens noch... irgendwas anderes rein, was die Suche schneller machen kann, nen bleibender Index oder so...
|
|
Lannes
      
Beiträge: 2352
Erhaltene Danke: 4
Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
|
Verfasst: Di 19.06.07 00: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,  etwas genauer hinschauen
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
_________________ MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
|
|
Wolle92 
      
Beiträge: 1296
Windows Vista Home Premium
Delphi 7 PE, Delphi 7 Portable, bald C++ & DirectX
|
Verfasst: Di 19.06.07 16:33
|
|
Wolle92 
      
Beiträge: 1296
Windows Vista Home Premium
Delphi 7 PE, Delphi 7 Portable, bald C++ & DirectX
|
Verfasst: Di 19.06.07 17: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
|
|
|