Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 03.01.2013, 03:04
StudentMarat StudentMarat вне форума
Прохожий
 
Регистрация: 18.02.2011
Сообщения: 38
Репутация: 156
По умолчанию Delphi. Уменьшить системное время

Как уменьшить системное время на 1 час??
Ответить с цитированием
  #2  
Старый 03.01.2013, 04:33
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,087
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Что значит "уменьшить системное время"? Изменить установку системных часов или просто получить значение на 1 час меньше, чем текущее время?
Ответить с цитированием
  #3  
Старый 03.01.2013, 10:57
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
Радость

получить текущее время через GetSystemTime(), уменьшить 60 раз на 1 минуту и задать новое значение SetSystemTime(). не забыв почитать комментарий:
Цитата:
Windows NT: The SetSystemTime function fails if the calling process does not have the SE_SYSTEMTIME_NAME privilege. This privilege is disabled by default. Use the AdjustTokenPrivileges function to enable this privilege and again to disable it after the time has been set.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #4  
Старый 03.01.2013, 13:46
StudentMarat StudentMarat вне форума
Прохожий
 
Регистрация: 18.02.2011
Сообщения: 38
Репутация: 156
По умолчанию

Цитата:
Сообщение от lmikle
Что значит "уменьшить системное время"? Изменить установку системных часов или просто получить значение на 1 час меньше, чем текущее время?

Например, на компьютере время 12:50. Нужно, чтобы при нажатии на кнопку время уменьшилось на 1 час, т.е. чтобы было 11:50.
Погуглил, нашел такой код, только не догоняю как его использовать:
Код:
function SetPCSystemTime(tDati: TDateTime): Boolean;
var

tSetDati: TDateTime;
vDatiBias: Variant;
tTZI: TTimeZoneInformation;
tST: TSystemTime;
begin

GetTimeZoneInformation(tTZI);
vDatiBias := tTZI.Bias / 1440;
tSetDati := tDati + vDatiBias;
with tST do
begin
wYear := StrToInt(FormatDateTime('yyyy', tSetDati));
wMonth := StrToInt(FormatDateTime('mm', tSetDati));
wDay := StrToInt(FormatDateTime('dd', tSetDati));
wHour := StrToInt(FormatDateTime('hh', tSetDati));
wMinute := StrToInt(FormatDateTime('nn', tSetDati));
wSecond := StrToInt(FormatDateTime('ss', tSetDati));
wMilliseconds := 0;
end;
SetPCSystemTime := SetSystemTime(tST);
end;
Ответить с цитированием
Этот пользователь сказал Спасибо StudentMarat за это полезное сообщение:
OTVET (18.01.2013)
  #5  
Старый 04.01.2013, 13:12
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Вообще уменьшить время довольно просто:
Код:
Var
  myTime: TSystemTime;
begin
 GetLocalTime(myTime);
 myTime.wHour := myTime.wHour - 1;
 SetLocalTime(myTime);
end;
Но! Для изменения времени необходимо обладать соответствующими правами.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
Этот пользователь сказал Спасибо Страдалецъ за это полезное сообщение:
OTVET (18.01.2013)
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 14:50.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025