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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 01.10.2012, 12:17
Moxa Moxa вне форума
Прохожий
 
Регистрация: 02.03.2012
Сообщения: 7
Репутация: 10
Стрелка Удаление файлов по дате и маске рекурсивно

Добрый день !

Задача - удалять все файлы по маске старше определенной даты в папке и всех ее подпапках, для этого есть:

1. Есть работающая функция удаления файлов, скажем, по маске *.txt в папке c:\111\ и всех ее подпапках (рекурсия):

Цитата:
function KillDir (Dir: AnsiString): boolean;
var
Sr: SysUtils.TSearchRec;
begin
{$I-}
if (Dir <> '') and (Dir[length(Dir)] = '\') then
Delete(Dir, length(dir), 1);
if FindFirst(Dir + '\*.*', faDirectory + faHidden + faSysFile +
faReadonly + faArchive, Sr) = 0

then
repeat

if (Sr.Name = '.') or (Sr.Name = '..') then
continue;
if (Sr.Attr and faDirectory <> faDirectory) then
begin
if AnsiLowerCase(ExtractFileExt(sr.Name)) = '.txt'

then
begin
FileSetReadOnly(Dir + '\' + sr.Name, False);
DeleteFile(Dir + '\' + sr.Name);

end
end
else
KillDir(Dir + '\' + sr.Name);
until FindNext(sr) <> 0;
FindClose(sr);
RemoveDir(Dir); // Удалит пустой каталог
KillDir := (FileGetAttr(Dir) = -1);
end;

Вызываем ее по кнопке:

Цитата:
KillDir ('c:\111\')



2. И есть рабочая процедура удаления по дате создания файлов (удалять файлы старше 14 дней):
Цитата:
procedure TForm1.Button1Click(Sender: TObject);
begin
SetCurrentDir('c:\111\');
if FindFirst('*.txt', faAnyFile, searchResult) = 0 then
begin
repeat
if FileDateToDateTime(searchResult.time) <= (date-14) then
begin
deletefile(searchResult.name);
end;
until FindNext(searchResult) <> 0;
FindClose(searchResult);

end;
end;

ВОПРОС:

как бы в функцию добавить фильтр по дате с процедуры или в процедуре вызвать функцию так, чтобы удаление прошло полноценно.

Спасибо.
Ответить с цитированием
  #2  
Старый 01.10.2012, 12:23
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

нужно перенести условие проверки даты из 2-ой процедуры в 1-ую функцию. в функцию можно добавить еще один параметр - дату.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Этот пользователь сказал Спасибо NumLock за это полезное сообщение:
Moxa (01.10.2012)
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter