unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) ListBox1: TListBox; Button1: TButton; Edit1: TEdit; procedure Button1Click(Sender: TObject); procedure FormShow(Sender: TObject); private { Private declarations } public { Public declarations } procedure FindFile(Dir:String); end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin ListBox1.Clear; FindFile(Edit1.Text); end; procedure TForm1.FindFile(Dir:String); var SR:TSearchRec; FindRes:Integer; begin FindRes:=FindFirst(Dir+'*.*',faAnyFile,SR); While FindRes=0 do begin if ((SR.Attr and faDirectory)=faDirectory) and ((SR.Name='.')or(SR.Name='..')) then begin FindRes:=FindNext(SR); Continue; end; if ((SR.Attr and faDirectory)=faDirectory) then {если найден каталог, то} begin FindFile(Dir+SR.Name+'\'); {входим в процедуру поиска с параметрами текущего каталога + каталог, что мы нашли} FindRes:=FindNext(SR); {после осмотра вложенного каталога мы продолжаем поиск в этом каталоге} Continue; end; ListBox1.Items.Add(SR.Name); FindRes:=FindNext(SR); end; FindClose(SR); end; procedure TForm1.FormShow(Sender: TObject); begin Edit1.Text:='C:\Windows\'; end; end. |