این کد تو دلفی 7 جواب میده
تابع جستجو به صورت بازگشتی
procedure findfile(a,s:string);
var
f:tsearchrec;
begin
if findfirst(a+s,faanyfile,f)=0 then
repeat
if f.Attr<>fadirectory then
form1.ListBox1.Items.Add(a+f.Name);
until findnext(f)<>0;
findclose(f);
if findfirst(a+'*',fadirectory,f)=0 then
repeat
if (f.Attr and fadirectory=fadirectory)and(f.Name<>'.')and(f.Name <>'..')then
findfile(a+f.Name+'\',s);
until findnext(f)<>0;
findclose(f);
end;
جستجو در یک درایو یا همه درایوها
procedure TForm1.Button1Click(Sender: TObject);
var
b,m:integer;
n:string;
begin
b:=combobox1.ItemIndex;
n:=combobox1.Items.Strings[b];
if b>-1 then
findfile(n,edit2.Text)
else
for m:=0 to combobox1.Items.Count-1 do
findfile(combobox1.Items.Strings[m],edit2.Text);
end;
گرفتن لیست درایوهای کامپیوتر
procedure TForm1.FormCreate(Sender: TObject);
var
x:char;
v:string;
begin
combobox1.Text:='alldrive';
for x:='a' to 'z' do
begin
v:=x+':\';
if getdrivetype(pchar(v))=DRIVE_FIXED then
combobox1.Items.Add(v);
end;
end;