Код:
function FilesInDir(sMask, sDirPath: String; var iFilesCount: Integer; var saFound: TStrings; bRecurse: Boolean = True): Integer;
var
sr: TSearchRec;
begin
try
if FindFirst(sDirPath + sMask, faAnyFile, sr) = 0 then
begin
repeat
if (sr.Name <> '.') and (sr.Name <> '..') and (sr.Attr and faDirectory = 0) then
begin
Inc(iFilesCount);
if saFound <> nil then
begin
if saFound.IndexOf(sDirPath + sr.Name) < 0 then
saFound.Add(sDirPath + sr.Name);
end;
end
else
begin
if (sr.Name <> '.') and (sr.Name <> '..') and (bRecurse) then
FilesInDir(sMask,sDirPath + sr.name + '\',iFilesCount,saFound,bRecurse);
end;
until
FindNext(sr) <> 0;
end;
FindClose(sr);
except
Result := -1;
end;
end;
sMask - маска, напр. *.*
sDirPath - путь до папки
var iFilesCount - кол-во найденных файлов;
var saFound - список путей до найденных фалов;
bRecurse: включая подкаталоги или нет