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

Вниз

Сколько времени прошло с момента создания файла...   Найти похожие ветки 

 
3APA3A ©   (2004-04-05 21:44) [0]

Как это сделать?  В Win32API какие-то неудобоваримые функции (или я плохо искал). Выдают мне количество 100-нанасекундных интервалов, прошедших с 1 января 1601 года... Это, конечно, интересно, но как мне тогда текущее время получить в таком же формате? В общем - мне надо узнать, сколько секунд назад этот файл создали... Допустимый разброс - от 0 до 5 секунд... если он старше  - этот файл меня не интересует....


 
Verg ©   (2004-04-05 21:49) [1]

SysUtils.FileDateToDateTime


 
3APA3A ©   (2004-04-05 21:54) [2]

Непонял... Ведь FileDateToDateTime выдаст мне тип Double, который по сути и есть Windows.FILETIME.  Как мне текущее время преобразовать в формат FILETIME?


 
3APA3A ©   (2004-04-05 22:11) [3]

help me... please... =))


 
Verg ©   (2004-04-05 22:17) [4]

Тогда я не понимаю - что тебе надо.
FileAge возвращает дату/время создания фйла в формате ОС, а FileDateToDateTime преобразует его в привычный TDateTime

Ну, а этот формат - это сколько прошло дней (суток) с 30.12.1899 00:00:00. Да Double, ну и что смущает?

А что надо-то?
Сколько секунд прошло с момента созлдания файла?

Dt : TDateTime;

 Dt := FileDateToDateTime(FileAge());
 Round( (Now - Dt) * 24 * 60 * 60 ) - это в секундах, можно в минутах или в часах - сполшная арифметика....

А что надо-то?


 
3APA3A ©   (2004-04-05 22:26) [5]

Все равно не понял.
 Вот есть у меня текущее время -
  var now : _SYSTEMTIME;
  Windows.GetLocalTime(now);
 Есть время создания файла
  var filetime : TDateTime;
  filetime := FileDateToDateTime(FileAge(...));
  два времени в разных форматах. Как получить разницу в секундах, минутах, часах... в чем угодно...
 Кстати, почему здесь 30.12.1899 а в функции GetFileTime - с 1.01.1601 ?


 
Verg ©   (2004-04-05 22:29) [6]


> var now : _SYSTEMTIME;


Объявив таким образом переменную, ты "закрыл" от себя функцию Now() (см. Help) возвращающую текущий момент времени в формате TDateTime.

> Windows.GetLocalTime(now);


И это тоже убери. Не нужно, даже вредно в данном случае


 
Verg ©   (2004-04-05 22:31) [7]


>  Кстати, почему здесь 30.12.1899 а в функции GetFileTime
> - с 1.01.1601 ?


Посмотри Help про TDateTime - там все написано: как, что и почему именно столько.


 
3APA3A ©   (2004-04-05 22:40) [8]

Ё-моё.... Now() - это функция.... Я думал ты просто забыл переменную объявить.... Теперь все ясно....
 P.S. а почему GetLocalTime в данном случае вредно?


 
Verg ©   (2004-04-05 22:52) [9]


>  P.S. а почему GetLocalTime в данном случае вредно?


Так если все лучшим образом приспособлено под TDateTime и функция  Now как раз и возвращает текущее время в этом привычном, почти родном для Дельфи формате, то зачем эти "извраты"?
Как говорится: зачем сложно, когда можно просто?



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

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

Наверх




Память: 0.49 MB
Время: 0.023 c
3-1080405086
HeoGtan
2004-03-27 19:31
2004.04.25
Вопрос по D7+ADO+MS.ACCESS97...


7-1077536316
DuhcmanSoft
2004-02-23 14:38
2004.04.25
Активизация окон


6-1077195126
csr
2004-02-19 15:52
2004.04.25
Открытые порты! Трабл!!!


1-1081507001
Аноним
2004-04-09 14:36
2004.04.25
TListView


6-1077828231
Pavel
2004-02-26 23:43
2004.04.25
IP