sMask - маска для поиска, например, *.* или *.mp3 или somefile.ext
sDirPath - путь до папки, в которой будет происходить поиск
iFilesCount - возвращаемая переменная с количеством найденных файлов
если это не нужно, можнр легко исключитьь из ф-ии
saFound - возвращаемый массив с путями до найденных файлов
bRecurse - искать ли в подпапках
Код:
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;
Пример использования:
Код:
//...
var
iCount: Integer;
sImagesPath: String;
saImages: TStrings;
begin
sImagesPath := 'c:\папка\';
saImages := TImagesList.Create();
FilesInDir('.jpg',sImagesPath,iCount,saImages,True);
// у нас в saImages список всех файлов с разширением .jpg,
// находящихся в папке c:\папка
saImages.Free;
end;
Писал по памяти, мог ошибиться где-нить...