Все просто.
Ты задаешь паттерн поиска '*.exe'
Таких файлов и директорий в корне нет.
Если ты хочешь искать рекурсивно по директориям, то ты должен искать все файлы.
Делай, например, так:
Код:
uses
Masks;
procedure TForm1.Button1Click(Sender: TObject);
begin
CheckListBox1.Clear;
findfile('c:\', '*.exe');
end;
procedure TForm1.FindFile(Dir: string; Pattern : 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 + '\', Pattern);
FindRes := FindNext(SR);
// после осмотра вложенного каталога мы продолжаем поиск
// в этом каталоге
Continue; // продолжить цикл
end;
If MatchesMask(SR.Name,PAttern) Then
CheckListBox1.Items.Add(SR.Name);
FindRes := FindNext(SR);
end;
FindClose(SR);
end;