Ну если только начала, тогда распишу поподробней.
FindFirst - функция, которая найдет первый файл, удовлетворяющий условию поиска (маске). Функция вернет 0 если файл найден, в противном случае вернет код ошибки.
FindNext - ищет следующий файл, удовлетворяющий условию поиска (маске). Возвращает результат, аналогичный FindFirst.
Пример, который найдет все файлы в директории
Код:
procedure GetAllFiles( Path: string );
var
sRec: TSearchRec;
isFound: boolean;
begin
isFound := FindFirst( Path + '\*.*', faAnyFile, sRec ) = 0;
while isFound do
begin
if ( sRec.Name <> '.' ) and ( sRec.Name <> '..' ) then
if ( sRec.Attr and faDirectory ) <> faDirectory then
Memo1.Lines.Add( Path + '\' + sRec.Name );
isFound := FindNext( sRec ) = 0;
end;
FindClose( sRec );
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
GetAllFiles( 'C:\WINDOWS' );
end;
Если искать надо еще и в поддиректориях, тогда процедура должна быть рекурсивной, то есть вызывать сама себя.
Код:
procedure GetAllFiles( Path: string );
var
sRec: TSearchRec;
isFound: boolean;
begin
isFound := FindFirst( Path + '\*.*', faAnyFile, sRec ) = 0;
while isFound do
begin
if ( sRec.Name <> '.' ) and ( sRec.Name <> '..' ) then
begin
if ( sRec.Attr and faDirectory ) = faDirectory then
GetAllFiles( Path + '\' + sRec.Name );
// Memo1.Lines.Add( Path + '\' + sRec.Name );
// В этом месте ты знаешь, что найден файл,
// можешь запускать поиск в нем...
end;
isFound := FindNext( sRec ) = 0;
end;
FindClose( sRec );
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
GetAllFiles( 'C:\WINDOWS' );
end;
В принципе этого достаточно, чтобы решить твою задачу... Ну а появятся вопросы, обращайся.
P.S.
Код писал прямо здесь, так что возможны опечатки...