Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi TSearchRec with progressbar (https://www.delphipraxis.net/148649-tsearchrec-progressbar.html)

sdean 5. Mär 2010 21:04


TSearchRec with progressbar
 
I've this procedure to search for files , But what i want to add is the progressbar feature; the progressbar will move along with procedure .

Delphi-Quellcode:
procedure TfrMain.FileSearch(const PathName, FileName : string; const InDir : boolean);
var Rec : TSearchRec;
    Path : string;
begin
Path := IncludeTrailingBackslash(PathName);
if FindFirst(Path + FileName, faAnyFile - faDirectory, Rec) = 0 then
 try
   repeat
     ListBox1.Items.Add(Path + Rec.Name);
   until FindNext(Rec) <> 0;
 finally
   FindClose(Rec);
 end;

If not InDir then Exit;

if FindFirst(Path + '*.*', faDirectory, Rec) = 0 then
 try
   repeat
    if ((Rec.Attr and faDirectory) <> 0) and (Rec.Name<>'.') and (Rec.Name<>'..') then
     FileSearch(Path + Rec.Name, FileName, True);
   until FindNext(Rec) <> 0;
 finally
   FindClose(Rec);
 end;
end; //procedure FileSearch

chaosben 6. Mär 2010 06:05

Re: TSearchRec with progressbar
 
There is no way to implement a real progress (take a look at the second post, for fake progress), without having an index.
Of course, you may count the files in a first run and use this number in a second run to calculate the progress. But this makes no sense. :)

hoika 6. Mär 2010 07:02

Re: TSearchRec with progressbar
 
Hello,

You can use the ProgressBar to show,
that there is something in progress,
so if you are at ProgressBar.Max,
restart with 1.

This is similiar with Explorer-Copy in Win7.


Heiko

xZise 9. Mär 2010 10:33

Re: TSearchRec with progressbar
 
Moin,
And in newer versions of Delphi you can use a Marqueebar, so the user can see, that there is working something.

You can't the the number of files within a directory, without counting them in a separated TSearchRec loop (but then you would do everything twice). This way is only suitable, when you do big thinks with every file, so the counting is very fast compared to the calculation.

Sincerly
Fabian

PS: Sorry for my english :mrgreen:


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