![]() |
langsame Suche
hi,
in meinem programm ist eine kleine datei- und ordnersuche enthalten:
Delphi-Quellcode:
das einlesen der dateien braucht aber saulang. in der windowssuche ist alles ruckzuck eingelesen.
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; 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] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:19 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz