Главная страница
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.024 c
8-27609
VLoB
2003-06-05 01:38
2003.10.09
Прозрачность в DirectDraw


1-27507
Mic_2000
2003-09-26 10:05
2003.10.09
Глюки после закрытия программы


14-27723
Manfred
2003-09-20 19:35
2003.10.09
Редактирование анкеты.


3-27398
Russko
2003-09-18 13:17
2003.10.09
Wise For Windows Installer


1-27570
big_bugzy
2003-09-29 15:05
2003.10.09
Как получить список всех открытых окон?