Progressbar w wyszukiwaniu plików

0

Jak zrobić w wyszukiwaniu plików zrobić progressbar

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;

type
 TForm1 = class(TForm)
   ListBox1: TListBox;
   Button1: TButton;
   Edit1: TEdit;
   Edit2: TEdit;
   procedure Button1Click(Sender: TObject);
   procedure FormCreate(Sender: TObject);
 private
   { Private declarations }
 procedure Szukaj(katalog: string; const plik, roz: ShortString);
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Szukaj(katalog: string; const plik, roz: ShortString);
const
ext = '*.*';
var
SR: TSearchRec;
fname: string;
begin

if katalog[length(katalog)] <> '\' then
 katalog := katalog + '\'; //dopisujemy znak '\' jesli go nie ma

if FindFirst(katalog + ext, faAnyFile, SR) <> 0 then
 EXIT; //jesli nie ma plików opuszczamy procedurę

while FindNext(SR) = 0 do
begin
 if ((sr.Attr and faDirectory) <> 0) and ( SR.Name <> '..') then
   szukaj(katalog + SR.Name + '\', plik, roz) //jesli plik jest katalogiem to szukamy w tym katalogu
 else
 begin
  {kolejno warunki: jesli nazya jest różna od '..' i '.' oraz rozszerzenie zgadza sie temu które podalismy a takze nazwa pliku z rozszerzeniem jest równa aktualnie sprawdzanemu plikowi}
   if (SR.Name <> '..') and (Sr.Name <> '.') and
   (lowercase(ExtractFileExt(SR.Name)) = '.' + roz) and
   (lowercase(plik + '.' + roz) = lowercase(extractfilename(SR.Name))) then
   ListBox1.Items.Add(katalog + SR.Name);
 end;
Application.ProcessMessages;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Szukaj('E:\', edit1.text, edit2.text);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin

end;

end.
0

żeby napisąć progressabar dla wyszukiwania musisz znać liczbę plików przeszukiwanych...

0

jesli jestes bardzo zdesperowany, mozesz to zrobic ewentualnie (i to bardzo ewentualnie bo chyba powaznie spowolni operacje wyszukiwania) w ten prowizoryczny sposob:

Patrzysz ile miejsca jest zajętego na miejscu, później jak robisz liste plikow to dodajesz do siebie kolejne rozmiary plikow, przez co wiesz ile juz sprawdziles...

[sciana] ale glupote napisalem....

0

A może tak: zliczasz, ile katalogów jest bezpośrednio w katalogu poszukiwań (i na przykład jeden stopień w głąb). Przeszukanie zawartości jednego podkatalogu to zmiana progressbara.

1 użytkowników online, w tym zalogowanych: 0, gości: 1