| 
| Autor | Beitrag |  
| Wolle92 
          Beiträge: 1296
 
 Windows Vista Home Premium
 Delphi 7 PE, Delphi 7 Portable, bald C++ & DirectX
 
 | 
Verfasst: Sa 16.06.07 17: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 11:01, insgesamt 3-mal bearbeitet
 |  |  |  
| hui1991 
          Beiträge: 433
 
 Windows XP, WIndows Vista
 Turbo Delphi Explorer| Delphi, PHP,Blitzbasic
 
 | 
Verfasst: 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 
          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 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?    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 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  
          Beiträge: 1296
 
 Windows Vista Home Premium
 Delphi 7 PE, Delphi 7 Portable, bald C++ & DirectX
 
 | 
Verfasst: 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 
          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 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?  _________________ 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 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  _________________ 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 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 
          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: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 10: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: 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,    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 15:33 
 |  |  |  
| Wolle92  
          Beiträge: 1296
 
 Windows Vista Home Premium
 Delphi 7 PE, Delphi 7 Portable, bald C++ & DirectX
 
 | 
Verfasst: 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 |  |  |  |