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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.05.2013, 23:07   #1
Fakov
Пользователь
 
Регистрация: 13.12.2009
Сообщений: 85
По умолчанию Найти файлы по фильтрам

Братцы, помогите разобраться(

Условие
Есть программа. Она находится в каком-то каталоге. В этом же каталоге есть папка допустим FIND. В этой папке могут быть а могут и не быть подпапки и есть сотня файлов.

Задача
Нужно найти в папке FIND среди всего ее содержимого, включая подпапки, файлы по следующим фильтрам:
1) c названием ABC (без учета расширения)
1.2) с содержанием в названии букв ABC (без учета расширения)
2) c буквой D в названии (без учета расширения)
3) файлы созданные не раньше чем 2 месяца назад(думаю можно через указание конкретной даты делать, да?).

Найденные файлы допустим удалить.
Как это по грамотнее провернуть?
Fakov вне форума Ответить с цитированием
Старый 13.05.2013, 08:00   #2
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,761
По умолчанию

Поиск файлов обсуждался очень много раз на этом форуме. Смотрите внизу страницы или пользуйтесь поиском.
FaTaL вне форума Ответить с цитированием
Старый 13.05.2013, 08:32   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Полностью согласен с FaTaL!!

единственное, позволю себе добавить сюда на форум универсальный шаблончик рекурсивного обхода папок (в него легко дописать нужные проверки и нужные действия) зелёным в коде выделен текст, который позволяет выводить найденные имена файлов в Memo (TStringList) - это можно/нужно заменить на код, обеспечивающий нужные Вам действия!

Код:
procedure DirSearch(Dir: string; Mask : string; SL: TStrings);
var
  SearchRec: TSearchRec;
begin
  Dir := IncludeTrailingBackslash(Dir);

  if FindFirst(Dir + '*.*', faAnyFile, SearchRec) = 0 then
    repeat
      Application.ProcessMessages;

      if (SearchRec.Attr and faDirectory) <> 0 then begin
        if (SearchRec.name <> '.') and (SearchRec.name <> '..') then
                DirSearch(Dir + SearchRec.name, Mask, sl)
      end
      else
        if MatchesMask(ExtractFileName(SearchRec.Name), Mask) then
          Sl.Add(Dir + SearchRec.Name);
    until FindNext(SearchRec) <> 0;
  FindClose(SearchRec);
end;

...
// вызов, например, так:
  DirSearch('C:\TEMP', '*.AVI', Memo1.Lines);

p.s. чтобы работал if MatchesMask(...) нужно в uses дописать Masks

Последний раз редактировалось Serge_Bliznykov; 13.05.2013 в 08:35.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 15.05.2013, 21:34   #4
Armorer
Подтвердите свой е-майл
 
Регистрация: 07.04.2007
Сообщений: 120
По умолчанию

Если версия Delphi >= 2010, то посмотрите модуль IOUtils с ним такой поиск делать очень просто.
Armorer вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как найти файлы? Mr. Industries Помощь студентам 2 25.09.2011 17:32
Как найти все файлы в папке? blackstersl Общие вопросы Delphi 3 24.06.2009 16:52
Помогите найти файлы O6eper Операционные системы общие вопросы 9 06.06.2009 14:51
СИ не может найти include файлы! Abbatik Помощь студентам 4 14.12.2007 02:03