AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

langsame Suche

Ein Thema von silentAMD · begonnen am 7. Mär 2004
Antwort Antwort
silentAMD

Registriert seit: 27. Sep 2003
203 Beiträge
 
Turbo Delphi für Win32
 
#1

langsame Suche

  Alt 7. Mär 2004, 10:17
hi,

in meinem programm ist eine kleine datei- und ordnersuche enthalten:

Delphi-Quellcode:
procedure TFenster.bSeaSClick(Sender: TObject);
procedure GetSear(dir, mask: string; OnlyDirs: Boolean);
var rec: TSearchRec; found: Integer;
begin
dir := Slash(dir);
found := FindFirst(dir+mask, faAnyFile, rec);
try while (found = 0) and (FEND=False) do begin
 if ((OnlyDirs and (rec.Attr and faDirectory <> 0))
 or not OnlyDirs and not(rec.Attr and faDirectory <> 0))
 and not(rec.Attr and faHidden <> 0)
 and not(UPPERCASE(dir+rec.Name) = UPPERCASE(Application.ExeName))
 and ((rec.Name <> '.') and (rec.Name <> '..')) then
 with lSea.Items.Add do begin
  Caption := rec.Name;
  SubItems.Add(dir);
 end;
 Application.ProcessMessages;
 found := FindNext(rec);
 end;
finally
 FindClose(rec);
 PanCh(lSea);
end;
found := FindFirst(dir+'*.*', faDirectory, rec);
try while (found = 0) and (FEND=False) do begin
 if (rec.Attr and faDirectory > 0) and (rec.Name <> '.') and (rec.Name <> '..') then
 GetSear(dir+rec.Name, mask, OnlyDirs);
 found := FindNext(rec);
 end;
finally
 FindClose(rec);
end;
end;
begin
if not(DriveOnline(True, c)) then Exit;
ECol := True;
Tim.Enabled := False;
Panel.Panels[2].Text := 'Es wird gesucht...';
mDir.Enabled := False;
bSeaS.Enabled := False;
bSeaN.Enabled := True;
bSeaN.Caption := 'Suche anhalten';
eSea.Enabled := False;
lSea.MultiSelect := cDatS.Checked;
lSea.Enabled := False;
lSea.Clear;
FEND := False;
lSea.Items.BeginUpdate;
if cDatS.Checked then
GetSear(c+':','*'+eSea.Text+Filter.Text, False)
else if cDirS.Checked then
GetSear(c+':','*'+eSea.Text+'*', True);
lSea.Items.EndUpdate;
if FEND = True then Application.MessageBox('Die Suche wurde abgebrochen.',PChar(a),16)
else FEND := True;
Pan('Suche beendet');
lSea.Enabled := True;
eSea.Enabled := True;
bSeaN.Caption := 'Neue Suche';
bSeaS.Enabled := True;
mDir.Enabled := True;
lSea.SetFocus;
end;
das einlesen der dateien braucht aber saulang. in der windowssuche ist alles ruckzuck eingelesen.
wie kann man das beschleunigen (mit einer anderen komponente ??)?

PLEASE HELP!!


PS: den trick mit begin- und endupdate ist mir schon bekannt.

[edit=sakura] [code] mit [delphi] getauscht. Mfg, sakura[/edit]
  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 22:32 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