Autor Beitrag
Wolle92
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1296

Windows Vista Home Premium
Delphi 7 PE, Delphi 7 Portable, bald C++ & DirectX
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 433

Windows XP, WIndows Vista
Turbo Delphi Explorer| Delphi, PHP,Blitzbasic
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: Sa 16.06.07 20:18 
Hallo,
user profile iconWolle92 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.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
  { Such-Routine auswählen }
  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.
ausblenden 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
  { Punkt anfügen, falls nicht vorhanden }
  if Pos('.', ext) = 0 then
    ext := '.' + ext;
  { Funktions-Beginn }
  ext := UpperCase(ext);
 //...
        SucheDir3(ext, pfad + '\' + sr.name)

_________________
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
Wolle92 Threadstarter
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1296

Windows Vista Home Premium
Delphi 7 PE, Delphi 7 Portable, bald C++ & DirectX
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1296

Windows Vista Home Premium
Delphi 7 PE, Delphi 7 Portable, bald C++ & DirectX
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: 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? :gruebel:

_________________
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
ZeitGeist87
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1593
Erhaltene Danke: 20

Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1296

Windows Vista Home Premium
Delphi 7 PE, Delphi 7 Portable, bald C++ & DirectX
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1593
Erhaltene Danke: 20

Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
BeitragVerfasst: Mo 18.06.07 11:29 
user profile iconWolle92 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1296

Windows Vista Home Premium
Delphi 7 PE, Delphi 7 Portable, bald C++ & DirectX
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: Di 19.06.07 00:08 
Hallo,

user profile iconWolle92 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:

user profile iconLannes hat folgendes geschrieben:
Wenn Du BeginUpdate und EndUpdate benutzt wird es schneller. ...
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
  { Such-Routine auswählen }
  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.
ausblenden 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
  { Punkt anfügen, falls nicht vorhanden }
  if Pos('.', ext) = 0 then
    ext := '.' + ext;
  
  { Funktions-Beginn }//<----------- eine Funktion fängt bei begin an
  ext := UpperCase(ext);
 //...
        SucheDir3(ext, pfad + '\' + sr.name)

Das sieht dann im groben so aus
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
function HilfsFunc(ext: String): String;
begin
  // der Code
end;

//der Aufruf
//die Funktion HilfsFunc übergibt seinen Rückgabewert an die Prozedur SucheDir3
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 user profile iconHeiko empfehlen:
[Delphi, Win32] SearchTool - schnelles Suchverfahren

_________________
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
Wolle92 Threadstarter
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1296

Windows Vista Home Premium
Delphi 7 PE, Delphi 7 Portable, bald C++ & DirectX
BeitragVerfasst: Di 19.06.07 16:33 
Aha... :idea: :idea: :idea: :idea: :idea: :idea: :idea: :idea: :idea: :idea:
Jetzt hab ich verstanden, was du meintest...
Wolle92 Threadstarter
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1296

Windows Vista Home Premium
Delphi 7 PE, Delphi 7 Portable, bald C++ & DirectX
BeitragVerfasst: 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