Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #3  
Старый 16.02.2009, 16:06
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,107
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ну, здесь такое сложное решение даже не нужно. Достаточно просто периодически запускать скан папки с подпапками. Сложнее всего будет с фильтрацией. Если позиции по 2 и 3 пунктам точно фиксированные, то и тут все несложно. Тебе нужны функции FindFirst/FindNext/FindClose и MatchesMask.

Алгоритм примерно такий.
В памяти делжим список найденных файлов.
Перед поиском его очищаем.
Начинаем поиск с корня указанной папки.
Если найденный объект есть папка - идем внутрь и рекурсивно вызывем ту же процку.
Если файл то:
1. проверяем расширение по маске
2. проверяем номер по позициям в имени файла
3. проверяем дату
Если все проверки прошли, то добавляем файл в список. Если нет, то не добавляем.

шаблон:
Код:
var
  FoundFiles : TStringList;

function CheckFile(AFileName : String; AExt : Array Of String; Awarehouse : String; ADate : String) : Boolean;
begin
  Result := False;
  // Здесь проверяем на соотв. условиям. Лень писать.
  // Если все проверки прошли, то Result := True;
end;

procedure DoFindFiles(APath : String; AExt : Array Of String; Awarehouse : String; ADate : String);
var
  F : TSearchRec;
  iFound : Integer;
begin
  iFound := FindFirst(APath + '*.*',faAnyFile,F);
  While iFound = 0 Do
    Begin
      If (F.Attr and faDirectory) <> 0 
        Then DoFindFiles(APath + F.Name + '\',AExt,AWarehouse,ADate)
        Else
          If CheckFile(F.Name,AExt,AWarehouse,ADate)
             Then FoundFiles.Add(APath + F.Name);
      iFound := FindNext(F);
    End;
  FindClose(F);
end;

proedure FindFiles(APath : String; AExt : Array Of String; Awarehouse : String; ADate : String);
begin
  FoundFiles.Clear;
  DoFindFiles(APath,AExt,AWarehouse,ADate);
end;
Ответить с цитированием
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 13:43.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025