Einzelnen Beitrag anzeigen

Benutzerbild von St.Pauli
St.Pauli

Registriert seit: 26. Dez 2004
351 Beiträge
 
Delphi 7 Personal
 
#1

ProgressBar bei der Festplattensuche einbringen

  Alt 21. Feb 2005, 18:00
Hi, ich will eine ProgressBar bei der Festplattensuche einbringen,
habe aber absolut keine Idee wie ich das machen sollte. Ich verwende die Funktion hier:

Delphi-Quellcode:
procedure GetFilesInDirectory(Directory: String; const m1 : String; List: TStrings; WithSubDirs, ClearList: Boolean);

procedure ScanDir(const Directory: String);
var
  SR: TSearchRec;
begin
  IF FindFirst(Directory + m1, faAnyFile and not faDirectory, SR) = 0 THEN TRY
    REPEAT
            List.Add(Directory + SR.Name);
    UNTIL FindNext(SR) <> 0;
  FINALLY
    FindClose(SR);
  end;

  IF WithSubDirs THEN begin
    IF FindFirst(Directory + '*.*', faAnyFile, SR) = 0 THEN try
      repeat
        IF ((SR.Attr and faDirectory) <> 0) and
           (SR.Name <> '.') and (SR.Name <> '..') THEN
          ScanDir(Directory + SR.Name + '\');
      until FindNext(SR) <> 0;
    finally
      FindClose(SR);
    end;
  end;
end;

begin
  List.BeginUpdate;
  try
    IF ClearList THEN
      List.Clear;
    IF Directory = 'THEN Exit;
    IF Directory[Length(Directory)] <> '\THEN
      Directory := Directory + '\';
    ScanDir(Directory);
  finally
    List.EndUpdate;
  end;
end;
Bis jetzt hatte ich das immer so gemacht, das ich suche (GetFiles...), dann die ProgressBar bewege, und dann das nächste suche, dann wieder die ProgressBar bewege.....
So stockt das aber immer ganzschön!
Dann hatte ich mal Probiert das ich erst alle Dateien auf der Festplatte in eine ListBox lade und dann diese ListBox nach den Dateien durchsuche. Bei der Suche in der ListBox konnte ich ListBox1.Items.Count verwenden. Dauerte aber sehr sehr lange, deswegen suche ich nach einer anderen Lösung.

Hoffentlich hat einer von euch ne Idee
Gruß St.Pauli
  Mit Zitat antworten Zitat