Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.03.2016, 20:39   #1
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
Вопрос Вывести только пути к файлам

Получаю содержимое всей папки
Код:
procedure GetAllFiles(Path: String; FileList: TStringList);
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, FileList);
      FileList.Add(Path + '\' + sRec.Name);
    end;

    Application.ProcessMessages;
    isFound := FindNext(sRec) = 0;
  end;

  FindClose(sRec);
end;
Но есть проблема, также выводятся пути на сами папки. Где их можно отсечь в процедуре?

Можно отсеивать с помощью ExtractFileExt,проверяя на пустоту. Может ещё какие варианты есть?

Последний раз редактировалось Shouldercannon; 19.03.2016 в 20:45.
Shouldercannon вне форума Ответить с цитированием
Старый 19.03.2016, 20:51   #2
kutani
Форумчанин
 
Регистрация: 23.01.2016
Сообщений: 608
По умолчанию

Код:
if (sRec.Attr and faDirectory) <> faDirectory then
      FileList.Add(Path + '\' + sRec.Name);
kutani вне форума Ответить с цитированием
Старый 19.03.2016, 21:13   #3
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Цитата:
Сообщение от kutani Посмотреть сообщение
Код:
if (sRec.Attr and faDirectory) <> faDirectory then
      FileList.Add(Path + '\' + sRec.Name);
Код:
      if (sRec.Attr and faDirectory) <> faDirectory then GetAllFiles(Path + '\' + sRec.Name, FileList);
      FileList.Add(Path + '\' + sRec.Name);
Так наоборот получилось, от чего пытаюсь избавиться
Shouldercannon вне форума Ответить с цитированием
Старый 19.03.2016, 21:30   #4
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

else забыл.
Код:
if (sRec.Attr and faDirectory) = faDirectory 
  then GetAllFiles(Path + '\' + sRec.Name, FileList) 
  else FileList.Add(Path + '\' + sRec.Name);
Но для ускорения разработки предлагаю взять готовую отлаженную функцию.
Их есть у меня.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...

Последний раз редактировалось min@y™; 19.03.2016 в 21:42.
min@y™ вне форума Ответить с цитированием
Старый 19.03.2016, 21:59   #5
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,761
По умолчанию

Что нужно то? Если только имена файлов во всех подпапках, то Directory.GetFiles а уж из полного пути имя файла извлечь не проблема.
FaTaL вне форума Ответить с цитированием
Старый 20.03.2016, 09:51   #6
kutani
Форумчанин
 
Регистрация: 23.01.2016
Сообщений: 608
По умолчанию

Цитата:
Так наоборот получилось, от чего пытаюсь избавиться
что наоборот? К существующему коду нужно всего лишь было добавить мое условие, а не убирать ваше. Что за самодеятельность?

Код:
if (sRec.Name <> '.') and (sRec.Name <> '..') then
    begin
      if (sRec.Attr and faDirectory) = faDirectory then GetAllFiles(Path + '\' + sRec.Name, FileList);

      if (sRec.Attr and faDirectory) <> faDirectory then
       FileList.Add(Path + '\' + sRec.Name);

    end;
kutani вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Geany контекстная команда и привязка к только php файлам Alexei91 Софт 0 30.06.2012 11:34
Как задать пути к pas-файлам, что бы не каждый раз не добавлять их в проект? TwiX Общие вопросы Delphi 11 25.03.2010 22:58
Указание пути к файлам,имена файлов GrindeX Паскаль, Turbo Pascal, PascalABC.NET 5 26.05.2009 18:40
Пути к файлам в INI файле Shouldercannon Общие вопросы Delphi 1 17.12.2008 18:46
Есть 2 листбокса, в 1 пути к файлам, во 2 имена этих файлов. delphi. Xandr Помощь студентам 2 06.10.2007 00:17