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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.07.2007, 13:58   #1
Kerk
 
Регистрация: 04.07.2007
Сообщений: 4
По умолчанию Полная очистка директории с нюансами...

В общем есть папка временная для обмена файлами. Нужна программа, чтобы очищала ее через какое-то время, но нельзя удалять все файлы сразу... Допустим задан интервал в час, то каждый файл попавший в папку должен быть удален через час.
т.е. один файл попал 50мин назад, должен быть удален через 10 мин, другой файл попал 5 мин назад - должен быть удален через 55 мин...

Прога в принципе есть, но удаляет все и сразу. Может кто что подскажет... или напишет сразу .
Kerk вне форума Ответить с цитированием
Старый 06.07.2007, 14:11   #2
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

компонент
timer
св-йство
interval
значение
3600000
событие
ontimer
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 09.07.2007, 10:27   #3
Kerk
 
Регистрация: 04.07.2007
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Квэнди Посмотреть сообщение
компонент
timer
св-йство
interval
значение
3600000
событие
ontimer

программист тварь ленивая - думал напишут, а я в код вставлю
Kerk вне форума Ответить с цитированием
Старый 09.07.2007, 10:34   #4
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

а что непонятного в фразе ?
кидаешь на форму компонент timer (вкладка systems) выставляешь его свойство Interval в необходимое тебе значение (1000=1сек) и в событие ontimer пишешь то что сейчас делаешь. Этот код у тебя будет соответственно выполняться через каждый заданный тобой интервал времени. Свойство enabled соответственно выставь в true
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 09.07.2007, 10:42   #5
Alex21
With best regards
Участник клуба
 
Регистрация: 20.04.2007
Сообщений: 1,448
По умолчанию

2 Квэнди: а зачем таймер на час? требуется то удалять не все файлы.
Таймер на 60000 (1 мин), а дольше проверка всех файлов по дате создания.
Alex21 вне форума Ответить с цитированием
Старый 09.07.2007, 10:47   #6
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Как я понимаю, при событии таймера нужно получить все файлы в каталоге, например так:

procedure ListFileDir(Path: string; FileList: TStrings);
var
SR: TSearchRec;
begin
if FindFirst(Path + '*.*', faAnyFile, SR) = 0 then
begin
repeat
if (SR.Attr <> faDirectory) then
begin
FileList.Add(SR.Name);
end;
until FindNext(SR) <> 0;
FindClose(SR);
end;
end;

Затем циклично проверить дату создания файла, например через функцию:

function GetFileDateTime(FileName: string): TDateTime;
var intFileAge: LongInt;
begin
intFileAge := FileAge(FileName);
if intFileAge = -1 then
Result := 0
else
Result := FileDateToDateTime(intFileAge)
end;

..и если дата = и т.д.
А проще использовать ini-файл. Т.е. при создании файла сразу записать строку, где ключ=имя файла, значение=время его удаления. При удалении файла сразу удалять и эту строку.
_SERGEYX_ вне форума Ответить с цитированием
Старый 10.07.2007, 17:06   #7
Роман Радер
Форумчанин
 
Аватар для Роман Радер
 
Регистрация: 16.12.2006
Сообщений: 859
По умолчанию

а можно просто - дата=имя файла
Роман Радер вне форума Ответить с цитированием
Старый 13.07.2007, 13:19   #8
Kerk
 
Регистрация: 04.07.2007
Сообщений: 4
По умолчанию

to_SERGEYX_:
немного не так
файлы в папке не создаются, а туда копируются... FileAge не то выдает .
у меня выходит так - обновляю папку первый раз, заношу имена всех файлов в файл тхт и к именам добавляю текущее время (NOW). а удалить нужно файл через час.
Потом по таймеру опять через 10 сек обновляется список и сравнивается время прошлого обновления с NOW. Файлы для которых прошел уже час удаляются из папки и из списка, а новые файлы которые попали в папку до обновления добавляются в список и им приписывается NOW+1 час... как-то так...
Kerk вне форума Ответить с цитированием
Старый 13.07.2007, 13:30   #9
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Вот по этому адресу
http://www.soft32.ru/delphi.shtml?to...tory_changes_w
лежит статья "Следить за изменениями в каталоге". Наверно, тебе пригодится...
_SERGEYX_ вне форума Ответить с цитированием
Старый 13.07.2007, 15:49   #10
Virtson
Владимир М.
Участник клуба
 
Аватар для Virtson
 
Регистрация: 30.10.2006
Сообщений: 1,289
По умолчанию

Цитата:
Сообщение от Kerk Посмотреть сообщение
программист тварь ленивая ...
а если дословно прочитать и обидеться ? %)
Берегите друг друга!
Virtson вне форума Ответить с цитированием
Ответ


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

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление динамических объектов / полная очистка формы 095 Общие вопросы Delphi 3 23.04.2012 16:09
Выбор директории Kashp Общие вопросы Delphi 6 06.05.2009 06:29
выбор директории Var17 Win Api 5 13.05.2008 13:50
отправка директории kommunist Работа с сетью в Delphi 2 19.01.2008 17:24
Очистка dbf. Ferro БД в Delphi 8 12.11.2007 17:27