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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.06.2021, 12:10   #1
Kronos913
Форумчанин
 
Регистрация: 10.02.2021
Сообщений: 627
По умолчанию Поиск нескольких типов файлов

Вот процедура для поиска файлов, которая автоматически сортирует по дате
Код:
procedure DirSearchSortDate(Dir: string; const Mask : string; SL: TStrings);
var
   SearchRec: TSearchRec;

   procedure SortFileDate;
   var
     i, d: longInt;
   begin
     d:=FileAge((Dir + SearchRec.Name));
     For i:=0 to SL.Count-1 do begin
       If d >FileAge(SL[i]) then begin
         SL.Insert(i, (Dir + SearchRec.Name));
         Exit;
       end;
     end;
     SL.Add(Dir + SearchRec.Name);
   end;

begin
   Dir := IncludeTrailingBackslash(Dir);
   if FindFirst(Dir + Mask, faAnyFile, SearchRec) = 0 then begin
     repeat
       Application.ProcessMessages;
       if (SearchRec.Attr and faDirectory)=0 then begin
          If not(SearchRec.Name='.') and not(SearchRec.Name='..') then
           SortFileDate;
       end;
     until FindNext(SearchRec)<>0;
   end;
   FindClose(SearchRec);
end;
При этом есть Mask задать условно '*.jpg', то будет искать только jpg

Вопрос: если мне надо 5 типов файлов найти, как лучше? 5 раз вызывать эту процедуру?
Или убрать маску, а внутри процедуры анализировать окончание имени файла?

Или может есть более лучший способ?
Kronos913 вне форума Ответить с цитированием
Старый 03.06.2021, 07:41   #2
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,814
По умолчанию

через цикл. передавай в процедуру поиска параметр - маску. типа так.
Код:
//где-то в начале программы
mask:array[1..5]of string;
mask=['*.jpg','*.jpeg','*.bmp','*.ico','*.ani'];
....
//где-то в недрах программы
for i=1 to 5 do DirSearchSortDate(твои параметры и маска mask[i])
нет, ну, хочешь 5 раз вызывай свою процедуру поиска по маске. почему бы и нет.
Код:
//где-то в недрах программы
DirSearchSortDate(твои параметры и маска *.jpg)
DirSearchSortDate(твои параметры и маска *.jpeg)
DirSearchSortDate(твои параметры и маска *.bmp)
DirSearchSortDate(твои параметры и маска *.ico)
DirSearchSortDate(твои параметры и маска *.ani)
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.

Последний раз редактировалось NetSpace; 03.06.2021 в 07:43.
NetSpace вне форума Ответить с цитированием
Старый 03.06.2021, 12:02   #3
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,550
По умолчанию

Можно за один вызов.
Код:
mask=['.jpg,.jpeg,.bmp,.ico,.ani'];
При входе в процедуру распарсить входную строку во внутри-процедурный массив string и затем уже циклы прокрутить внутри процедуры.
Хотя сэкономленные несколько микросекунд - дадут ли "чувство глубокого удовлетворения и законной гордости" ? © газета "Правда"
Да и не будет ли "экономия наоборот" ?
digitalis вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Открытие разных типов файлов!!!! mikisss Помощь студентам 10 11.06.2014 12:13
разработка программ с чтением и записью файлов различных типов Jalgas-xan Паскаль, Turbo Pascal, PascalABC.NET 1 12.02.2013 23:41
Разработка программ с чтением и записью файлов различных типов(паскаль) Tolya92 Помощь студентам 3 13.12.2012 15:14
Создание сложного запроса на выборку с использованием нескольких фильтров разных типов skier88 Microsoft Office Access 2 29.11.2012 18:50
Dll библиотека, описание нескольких типов данных Vol666 Общие вопросы Delphi 2 19.05.2010 12:13