![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Удаление файлов с определенной датой создания.. [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]И в чем загвоздка ?