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

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

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


virus_gvd ©   (2003-01-26 02:30:00) 

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


blackalex   (2003-01-28 11:27:00) [1]

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

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


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

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


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

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

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

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


blackalex   (2003-01-27 10:49:00) [4]

Из моего архива. Для 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;


mdw   (2003-01-27 10:32:00) [5]


GetFileTime


Наверх

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