Показать сообщение отдельно
  #4  
Старый 08.07.2007, 15:15
Аватар для 4kusNick
4kusNick 4kusNick вне форума
Местный
 
Регистрация: 06.09.2006
Адрес: Россия, Санкт-Петербург
Сообщения: 444
Репутация: 550
По умолчанию

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;

Писал по памяти, мог ошибиться где-нить...
__________________
THE CRACKER IS OUT THERE
Ответить с цитированием