Главная страница
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.022 c
1-1081118674
Alex79
2004-04-05 02:44
2004.04.25
Проблема смены шрифтов


9-1068044148
|dRake|
2003-11-05 17:55
2004.04.25
и ещё раз о PowerDraw :)


14-1080832905
DeadMeat
2004-04-01 19:21
2004.04.25
VMWare и Win98


3-1080447814
Артем К.
2004-03-28 08:23
2004.04.25
Как сохранить в таблицу DB значение вычисляемого поля


14-1080915958
Delphi5.01
2004-04-02 18:25
2004.04.25
Рецепт плавленого ...