![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#4
|
|||
|
|||
|
Все просто.
Ты задаешь паттерн поиска '*.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; |
| Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
coffeine (27.12.2020)
| ||