Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.10.09;
Скачать: CL | DM;

Вниз

определение измененных файлов   Найти похожие ветки 

 
virus_gvd   (2003-01-26 02:30) [0]

Как можно из Делфы определить :
- дату создание файла(время)
- дату изменения файла(время)
- дату открытия файла


 
mdw ©   (2003-01-27 10:32) [1]


GetFileTime


 
blackalex ©   (2003-01-27 10:49) [2]

Из моего архива. Для last acces file time можешь по образцу сам дописать. Мне оно никогда не нужно было , поэтому отсутствует

// if ID = 0 return value is create file time
// if ID = 1 return value is last write file time
function GetFileSystemTime (ID : Integer; FileName: AnsiString): TSystemTime;
var
SearchRec : TSearchRec;
Success : Integer;
DT : TFileTime;
begin
Result := GetDefaultFileSystemTime;
Success := FindFirst(FileName,faAnyFile,SearchRec);

//get create file time : ID = 0
//------------------------------------------------------------------
if (Success = 0) and (ID = 0 ) and
(( SearchRec.FindData.ftCreationTime.dwLowDateTime <> 0)
or ( SearchRec.FindData.ftCreationTime.dwHighDateTime <> 0))
then
begin
FileTimeToLocalFileTime(SearchRec.FindData.ftCreationTime,DT);
FileTimeToSystemTime(DT,Result);
end;

//get last write file time ID = 1
//------------------------------------------------------------------
if (Success = 0) and (ID = 1 ) and
(( SearchRec.FindData.ftLastWriteTime.dwLowDateTime <> 0)
or ( SearchRec.FindData.ftLastWriteTime.dwHighDateTime <> 0))
then
begin
FileTimeToLocalFileTime(SearchRec.FindData.ftLastWriteTime,DT);
FileTimeToSystemTime(DT,Result);
end;
//------------------------------------------------------------------
FindClose(SearchRec);
end;


function GetDefaultFileSystemTime: TSystemTime;
begin
with Result do
begin
wYear := 1970;
wMonth := 1;
wDayOfWeek := 1;
wDay := 1;
wHour := 0;
wMinute := 0;
wSecond := 0;
wMilliseconds := 0;
end;
end;


 
Kladov   (2003-01-27 17:24) [3]

Нормальные герои всегда идут в обход ;-)
В Windows.pas определена функция:

function GetFileTime(hFile: THandle;
lpCreationTime, lpLastAccessTime, lpLastWriteTime: PFileTime): BOOL; stdcall;

После чего если надо преобразовать в TSystemTime, используем
FileTimeToSystemTime или FileTimeToLocalTime,
если надо дальше в TDateTime, то SystemTimeToDateTime (в KOL - SystemTime2DateTime).


 
Kladov   (2003-01-27 21:40) [4]

Прошу простить. Этот метод совсем не годится, если нужен LastAccessTime. Мнда. Вот. Тогда лучше так, как сверху. Только лучше использовать FindFirstFile / FindNextFile / FindClose из Windows.pas а не FindFirst / FindNext / FindClose из sysutils. И немного странно мне показалось получение GetDefaultFileSystemTime. 0 вернуть в Result, и все дела. В VCL будет 31.12.1989, в KOL 01.01.0001.


 
blackalex ©   (2003-01-28 11:27) [5]

И немного странно мне показалось получение GetDefaultFileSystemTime. 0 вернуть в Result, и все дела. В VCL будет 31.12.1989, в KOL 01.01.0001.

Да мне просто в моей проге надо было , чтобы в случае ошибки отсчет начинался с 1970-го года. Вот я и перекопировал сюда всё как было. Да и фукции этой сто лет уже. А вот про GetFileTime я и не знал. Спасибо.



Страницы: 1 вся ветка

Текущий архив: 2003.10.09;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.02 c
1-27595
Fasy
2003-09-27 05:56
2003.10.09
размер папки


1-27559
Raptorus
2003-09-29 15:54
2003.10.09
Здравствуйте, Мастера. Подскажите пожалуйста как можно вызвать


1-27479
777
2003-09-26 21:53
2003.10.09
Action


3-27343
MJ
2003-09-19 23:18
2003.10.09
динамический запрос


1-27597
Кен
2003-09-29 07:20
2003.10.09
Как сделать, чтобы через определённый промежуток времени,