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