Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Hilfe bei Progress Darstellung (https://www.delphipraxis.net/41901-hilfe-bei-progress-darstellung.html)

Master_BB 10. Mär 2005 13:55


Hilfe bei Progress Darstellung
 
Hya,
ich schreibe derzeit ein Programm das automatisch beim Start bestimmte dateien sucht.
dabei wird höchster warscheinlcihkeit immer die gesamte partition und mehrere partitionen
hintereinander nach dateinen einer bestimmten maske gesucht wie '*.mpg' oder '*.txt'.
So der such algorithmus ist fertig mit find first/next und callback.
Jedoch möchte ich dazu natürlich auch einen progress.
Weiß jemand was man als ProgressBarMaxValue nehmen könnte in dieser situation?
Meine Idee ist alle verzeichnisse der suchpartition durch zählen und als max zu nehmen
und wenn er rekursiv sucht könnte man immer wen er in ein verzeichnis geht sozusagen
den progress um 1nes erhöhen. jedoch läuft meine FolderCount routine mit
findfirst recht langsam für einmal C:\ ordner zählen ca 1ne Min. und nur um die
progressbar zu initialisieren pro partition ist ne minute zu lang.
jemand vorschläge wie man sonst den progress hinbekommt?

amsonsten vieleicht jemand einen vorschlag wie mein countfolders schneller geht?
Delphi-Quellcode:
function CountFolders(AFolder : string) : integer;
var
  ASearchRec : TSearchRec;
begin
  Result := 0;
  if (AFolder = '') then
    Exit;

  if FindFirst(BuildFileName(AFolder, '*.*'), faDirectory, ASearchRec) = 0 then
  begin
    try
      repeat
        if ((ASearchRec.Attr and faDirectory) = faDirectory) and
           (ASearchRec.Name <> '..')                          and
           (ASearchRec.Name <> '.')                           then
        begin
          inc(result);
          result := result + CountFolders(BuildFileName(AFolder, ASearchRec.Name));
        end;
      until FindNext(ASearchRec) <> 0;
    finally
      SysUtils.FindClose(ASearchRec);
    end;
  end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:09 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