Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Системное время, как сменить 
:(
    Опции темы
MacTep
Дата 1.3.2006, 22:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1292
Регистрация: 4.8.2003
Где: г. Самара

Репутация: 4
Всего: 4



Как сменить системное время? Перечитал кучу тем по этому вопросу на форуме, но так ничего конкретно работающего не нашел. Какие будут предложения?


--------------------
(A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :)
PM MAIL   Вверх
Yanis
Дата 1.3.2006, 22:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 72
Всего: 111



т.е. SetSystemTime тебе не подходит?


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
Snowy
Дата 1.3.2006, 23:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Лучше SetLocalTime.
PM MAIL   Вверх
MacTep
Дата 2.3.2006, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1292
Регистрация: 4.8.2003
Где: г. Самара

Репутация: 4
Всего: 4



Хотя бы примерчик небольшой...
Я делаю так:
Код

procedure TForm1.BitBtn3Click(Sender: TObject);
var st:TSystemTime;
    temp,now:TDateTime;
    y,mn,d:word;
begin
  now:=EncodeTime(h,m,s,0);
  y:=2006;
  mn:=2;
  d:=27;
  st.wYear:=y;
  st.wMonth:=mn;
  st.wDay:=d;
  temp:=EncodeDate(y,mn,d);
  st.wDayOfWeek:=DayOfWeek(Trunc(temp));
  st.wHour:=h-2;
  st.wMinute:=m;
  st.wSecond:=s;
  st.wMilliseconds:=0;
  SetSystemTime(st);
end;

А все равно не работает. Год устанавливается какой-то странный - 1899 и месяц декабрь. Число 31. Как исправить ошибку?

Это сообщение отредактировал(а) MacTep - 2.3.2006, 22:11


--------------------
(A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :)
PM MAIL   Вверх
Snowy
Дата 2.3.2006, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Ну нагородил. Все намного проще.
Вот, например, устанавливаем дату-время на 2 суток вперед:
Код
var
  st: TSystemTime;
  dt: TDateTime;
begin
  dt := now + 2;
  DateTimeToSystemTime(dt, st);
  SetLocalTime(st);
end;

PM MAIL   Вверх
Poseidon
Дата 2.3.2006, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



Ну не знаю, у меня все меняется:

Код

var st:TSystemTime;
begin
  st.wYear:=2006;
  st.wMonth:=03;
  st.wDay:=01;
  st.wHour:=22;
  st.wMinute:=30;
  st.wSecond:=20;
  SetSystemTime(st);
end;


Это сообщение отредактировал(а) Poseidon - 2.3.2006, 22:36


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Snowy
Дата 2.3.2006, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Цитата(MacTep @ 2.3.2006, 22:09 Найти цитируемый пост)

  now:=EncodeTime(h,m,s,0); // это шутка такая?
  st.wDayOfWeek:=DayOfWeek(Trunc(temp)); // а Trunc зачем?
  st.wHour:=h-2; // а, если сейчас час ночи?
  st.wMinute:=m;  // Ну и чему здесь равны m и s?
  st.wSecond:=s;
  SetSystemTime(st);

PM MAIL   Вверх
MacTep
Дата 2.3.2006, 22:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1292
Регистрация: 4.8.2003
Где: г. Самара

Репутация: 4
Всего: 4



Snowy, а если надо на несколько минут назад??? Или часов??? Тогда что?
Цитата

st.wHour:=h-2; // а, если сейчас час ночи?
Не знаю, что ты имел в виду под этим вопросом, но если написать st.wHour:=22 и сменить время, то значение времени будет час ночи. Как это понимать?


--------------------
(A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :)
PM MAIL   Вверх
Snowy
Дата 3.3.2006, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Цитата(MacTep @ 2.3.2006, 22:58 Найти цитируемый пост)
Snowy, а если надо на несколько минут назад??? Или часов??? Тогда что?
Код

  now - (1/24 * 2); // на 2 часа назад
  now + (1/24/60 * 5); // на 5 минут вперед


Цитата(MacTep @ 2.3.2006, 22:58 Найти цитируемый пост)
st.wHour:=h-2; // а, если сейчас час ночи?QuoteEndQuoteEEndНе знаю, что ты имел в виду под этим вопросом
Я имел ввиду, что ести ты из часа ночи (если у тебя в h будет 1) вычтешь 2 часа, то получишь 65534 часов.
PM MAIL   Вверх
MacTep
Дата 5.3.2006, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1292
Регистрация: 4.8.2003
Где: г. Самара

Репутация: 4
Всего: 4



Код

  now - (1/24 * 2); // на 2 часа назад
  now + (1/24/60 * 5); // на 5 минут вперед
А вот за это спасибо! smile Гениально, по-моему!


--------------------
(A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :)
PM MAIL   Вверх
2maxim
Дата 6.3.2006, 20:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 3.3.2006

Репутация: нет
Всего: нет



Цитата(Poseidon @ 2.3.2006, 22:36)
Ну не знаю, у меня все меняется:

Код

var st:TSystemTime;
begin
  st.wYear:=2006;
  st.wMonth:=03;
  st.wDay:=01;
  st.wHour:=22;
  st.wMinute:=30;
  st.wSecond:=20;
  SetSystemTime(st);
end;

А как нужно ввести дату из edit , ведь st.wHour - тип word , a edit.text - string?
PM MAIL   Вверх
MIX55
Дата 6.3.2006, 21:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


много работы
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 208
Регистрация: 23.10.2005
Где: Здесь

Репутация: 3
Всего: 4



можно вот так

Код

procedure TForm1.Button1Click(Sender: TObject);
var
St:_SYSTEMTIME;
hToken:THandle;
privValue:Int64;
tkp:TOKEN_PRIVILEGES;
ReturnLength:Cardinal;
begin
//---------Если не хватает привилегий
if not OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken )
then ShowMessage('OpenProcessError');
if not LookupPrivilegeValue( nil, 'SeSystemTimePrivilege', privValue )
then begin
CloseHandle(hToken);
ShowMessage('LookupPriv Error');
end;

tkp.PrivilegeCount:= 1;
tkp.Privileges[0].Luid := privValue;
tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
if not AdjustTokenPrivileges(hToken,false,tkp,SizeOf(tkp),tkp,ReturnLength)
then showmessage('privilege error');
CloseHandle( hToken );

// ------------ увеличиваем год на 1
// возможны и другие варианты
GetSystemTime(St);
inc(St.wYear);
SetSystemTime(st);
end;

--------------------
Hарод, а как в дельфи писать паскалевские проги....?*********************************************Жизнь слишком коротка, чтобы писать на Assembler'e
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0857 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.