Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Удаление файлов с определенной датой создания.. [D7, WinXP]


Dru095 ©   (2007-11-17 17:39:00) 

Удалено модератором
Примечание: СПАМ


Dru095   (2007-11-17 18:15:00) [1]

Спасибо сейчас попробую.. Обязательно отпишусь...


Сергей С.   (2007-11-17 18:10:00) [2]

if FileDateToDateTime(FileGetDate(FHandle)) < (Now - IniFiles.ReadInteger('SETUP', 'ACTUAL_BD_DAY', 6)) then DeleteFile(..)


Dru095   (2007-11-17 18:02:00) [3]

очень оперативно прям радует:)

я понимаю что данный алгоритм может Вас шокировать :) но прошу отнестись с пониманием. Вот так вот я пытаюсь это делать. Гдето тут есть ошибка, скорее всего при сравнении дат..
Но так как я новичок в этом деле прошу помощи у специалистов.

if GetFileDate(Path + '\' + sRec.Name) < DateToStr(Now - StrToInt(IniFiles.ReadString('SETUP', 'ACTUAL_BD_DAY', '6')))

При таком сравнении удаляются не те архивы.
в общем запарочка при сравнении дат скорее всего..

//Функция использую для определения даты создания файла
function GetFileDate(FileName: string): string;
var
FHandle: Integer;
begin
FHandle := FileOpen(FileName, 0);
try
Result := DateToStr(FileDateToDateTime(FileGetDate(FHandle)) );
finally
FileClose(FHandle);
end;
end;

//функцию использую для удаления старых архивов
procedure GetAllFiles( Path: string );
var
sRec: TSearchRec;
isFound: boolean;
begin

//тут указываю путь к ини файлу
IniFiles := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'Setup.ini');

isFound := FindFirst( Path + '\*.rar', faAnyFile, sRec ) = 0;

while isFound do
begin
if ( sRec.Name <> '.' ) and ( sRec.Name <> '..' ) then
if ( sRec.Attr and faDirectory ) <> faDirectory then
//проверка архивов на актуальность

// Ошибка сравнения двух дат скорее всего тут..
//
// GetFileDate(Path + '\' + sRec.Name) - дата создания файла
// DateToStr(Now - StrToInt (IniFiles.ReadStrin('SETUP', 'ACTUAL_BD_DAY', '6')) - текущая дата минус кол во дней указанное в ini.
//
//
//
//
//---------------------------------------------------------------
if GetFileDate(Path + '\' + sRec.Name) < DateToStr(Now - StrToInt (IniFiles.ReadString('SETUP', 'ACTUAL_BD_DAY', '6'))) then
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
//
// В итоге использования такого сравнения удаляются не те архивы.
//
//

//удаление
deletefile(Path + '\' + sRec.Name);

isFound := FindNext( sRec ) = 0;
end;

FindClose( sRec );
end;

Прошу помощи в исправлении ошибки.


trubin   (2007-11-17 17:52:00) [4]

А вопрос то где?

Если я правильно понимаю, то Now / DecodeDate / EncodeDate тебе в руки


Сергей С.   (2007-11-17 17:52:00) [5]

И в чем загвоздка ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо