| 
| 
 | Вопрос # 446/ вопрос решён / | 
 |  Доброе время суток уважаемые эксперты, вопрос собственно в чем, есть у меня работающее приложение , которое каджый день получает с видеокамеры наблюдения видео и сохраняет его на компьютер, каждый час создается на диске папочка с именеи типа "02-04-07 02" где первые две цифры это (День, затем Месяц, год и тот час во время которого происходила запись) (те дд-мм-гг чч)Собственно мне необходимо удалять все файлы и папки, созданны раннее чем за 15 дней до текущей даты и что бы она это делала постоянно и каждый день...
 Ответ #1. Отвечает эксперт: min@y™ В старой версии пакета модулей Delphi Works в файле FileWorks.pas есть все необходимые тебе функции? а именно:
 function GetFileDateTimeStamp(const Filename: String; var FileDateTimeStamp: TFileDateTimeStamp): Boolean;
 
 function ListFilesRecursive(Path, Mask: string; ShowPath: Boolean): TStringList;
 
 function DeleteDirectory(Directory: String; CanUndo, DeleteNotEmpty, GUI: Boolean): Boolean;
 
 function DeleteFilesRecursive(Path, Mask: string): Boolean;
 
 Могу выслать весь пакет, если не найдёшь в инете.
 
|  | Ответ отправил: min@y™ (статус: Доктор наук)Время отправки: 2 апреля 2007, 08:30
 Оценка за ответ: 5
 Комментарий к оценке: Можно мне выслать на мыло этот пакет??? адрес alex@xtec3.dvgk.ru |  Ответ #2. Отвечает эксперт: ANBsoft Проще будет при помощи FindFirst/FindNext найти нужные папки, при помощи них же сделать свою версию DeleteDirectory - это строчек 15, повесить все это на таймер и выполнять раз в полчаса-час.Можно еще проще. Если сервер работает круглосуточно, то можно просто каждый час запускать на выполнение команду DelTree с нужным именем папки (я делал себе подобную программу для упаковки архивов ISA сервера, нюанс только в том, что ISA сервер сам удаляет свои логи старше недели или двух, а у Вас при остановках сервера видеонаблюдения могут оставаться неудаленные папки, хотя и это можно решить).
 
|  | Ответ отправил: ANBsoft (статус: Студент)Время отправки: 2 апреля 2007, 08:58
 Оценка за ответ: 5
 |  Ответ #3. Отвечает эксперт: Вадим К Я бы переводил дату напрямую с названия каталога. Так как нет гарантии, что дата создания каталога будет та, что надо (её случайно не обновлят. Хоть как это и странно выглядит, но это возможно. Каталоги банально могли на новый винт закопипастить).Первым шагом через FindFirst|FindNext ищем каталог очередной. Потом с помощью copy() с названия вытягиваем месяц, год, число. Потом пользуемся функцией EdncodeDateTime (модуль DateUtils)которой в качестве параметров и передаём их. там ещё минуты и секунды надо, но мы туда пишем 0. Результат функции на самом деле - вещественное число. находим разность между ним и функцией Now(). Если больше 15 - кандидат на удаление
 
|  | Ответ отправил: Вадим К (статус: Академик)Время отправки: 2 апреля 2007, 10:47
 Оценка за ответ: 5
 Комментарий к оценке: А можно поподробней пожалуйста??? |  
 Мини-форум вопросаВсего сообщений: 2; последнее сообщение — 3 апреля 2007, 11:22; участников в обсуждении: 2. 
|   | min@y™ (статус: Доктор наук), 3 апреля 2007, 08:29 [#1]:Выслал пакет с модулями. Это старая версия пакета, новую можно найти тут: http://delphiworks.sourceforge.net/index.htm
 Но в этой версии я таких функций не нашёл (может плохо искал).
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | Вадим К (статус: Академик), 3 апреля 2007, 11:22 [#2]:Шуваев Алексей Сергеевич Что конкретно вам не понятно? пишите - прокоментирую
 Галочка "подтверждения прочтения" - вселенское зло. |  31 января 2011, 19:22: Статус вопроса изменён на решённый (изменил модератор Ерёмин А.А.): Автоматическая обработка (2 и более ответов с оценкой 5) Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |