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

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

работа с SYSTEMTIME, FILETIME, прибавить любой промежуток времени [D7, WinXP]


Max_2006 ©   (2006-12-17 17:09:00) 

Функцией GelLocalTime я узнаю текущее время установленное на компьютере в структуре SYSTEMTIME.. А вот как мне к этому времени прибавить например день, но так что если текущий день будет последним в текущем месяце то и месяц прибавится, так же и с годом... Попробовал сделать так:

var
sysTime: SYSTEMTIME;
begin
 GetLocalTime(sysTime);
 sysTime.wDay := sysTime.wDay + 1;
end;

День прибавляется, но без учета если текущий день будет последним в текущем месяце то и месяц прибавится, так же и с годом, т.е. получается и 32-й и 33-й и т.д.. день в месяце, чего нету на самом деле... Подозреваю что через FILETIME можно это реализовать, но как это сделать, т.е. математику этой структуры я что-то нигде не нашел, нашел единственное что время считается в 100нс, но так я и не понял, там есть dwHighDateTime и dwLowDateTime, и что с этим делать, как это считать? Прошу не посылась в MSDN, читал там...


BiN   (2006-12-17 23:59:00) [1]


> Max_2006   (17.12.06 17:09)  
> Подозреваю что через
> FILETIME можно это реализовать, но как это сделать, т.е.
>  математику этой структуры я что-то нигде не нашел, нашел
> единственное что время считается в 100нс, но так я и не
> понял, там есть dwHighDateTime и dwLowDateTime, и что с
> этим делать, как это считать? Прошу не посылась в MSDN,
> читал там...


type
 FILETIMEEX = packed record
   case Byte of
   1: (F: FILETIME);
   2: (N: Int64);
 end;

var
 T: FILETIME;
begin
 Win32Check(GetSystemTimeAsFileTime(T));
 FILETIMEEX(T).N:=FILETIMEEX(T).N+100*1000*1000
end;


Max_2006   (2006-12-17 22:32:00) [2]

Спасибо! Вы очень добры...


BiN   (2006-12-17 17:51:00) [3]


>  Прошу не посылась в MSDN, читал там...


врач сказал в msdn, значит, в msdn.


Max_2006   (2006-12-17 17:30:00) [4]

TDateTime, хоть и старый и добрый, но опять же таки, я на WinAPI учусь, не хочу борландовские модули подключать... Хоть TDateTime и находится в модуле System, а фонкции работы с ним в SysUtils, я и задал этот вопрос, чтобы обойтись без этого модуля..


Eraser   (2006-12-17 17:14:00) [5]

> [0] Max_2006   (17.12.06 17:09)

почему бы не использовать старый добрый TDateTime ?
var
sysTime: TDateTime;
begin
sysTime := Now;
sysTime := sysTime + 1;
end;

потом, если, есть желаение, можно перевести в системный формат. хотя вижу смысл использовать онный, только если нужно получить свойства файла.


Наверх

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