Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Как перебрать все файлы по маске в директории?


Автор: Canada 3.5.2009, 17:48
В http://forum.vingrad.ru/forum/topic-257816.htmlтопике ниже моя проблема. Как видите, решить ее никкак нельзя иначе. Т.е. подскажите пожалуйста (желательно примерами или прямым кодом  smile ) как мне перебрать все файлы с расширением *.docx в указанной папке. И вообще, как эту папку "визуально указать". Т.е. чтобы не текст в строку вбивать руками с адресом папки а типа через какой нибудь диалог. 
И самое главное чтобы, можно было перебрать все файлы с нужным расширением. Т.е. взял 1 файл - сделал с ним что надо, взял другой..И так пока есть нужные файлы.
Заранее благодарен.

Автор: Данкинг 3.5.2009, 18:10
Цитата(Canada @  3.5.2009,  18:48 Найти цитируемый пост)
как мне перебрать все файлы с расширением *.docx в указанной папке. 

А в FileListBox их почему нельзя вывести?

Цитата(Canada @  3.5.2009,  18:48 Найти цитируемый пост)
И вообще, как эту папку "визуально указать".

TDirectoryListBox ?



Автор: Keeper89 3.5.2009, 18:11
Вот возможный пример.

Автор: dizJis 18.5.2009, 12:09
Код
function FileInDirectory(Path: WideString; out List: TStrings): boolean;
var
  SR: TSearchRec;
begin
  result := false;
  if FindFirst(Path + '*.dll', faAnyFile, SR) = 0 then
  begin
    List.Clear;
    repeat
      if (SR.Attr <> faDirectory) then
        List.Add(Path+SR.Name);
    until FindNext(SR) <> 0;
    SysUtils.FindClose(SR);
    result := true;
  end;
end;


Указанная функция ищет файлы с маской '*.dll' в директории Path и выводит список найденныз в List. Чтобы вызвать диалог выбора папки подключи в uses модуль Filectrl и заюзай функцию SelectDirectory, например, так:
Код
if SelectDirectory('Выберите папку, '', SelectDir, [sdShowShares, {sdNewUI,} sdValidateDir], fOptions) then
    edPath.Text := SelectDir+'\';


Автор: Данкинг 18.5.2009, 14:03
dizJis, угу, ДРКБ рулит. smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)