![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
работа с 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;
потом, если, есть желаение, можно перевести в системный формат. хотя вижу смысл использовать онный, только если нужно получить свойства файла.