Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Работа с временем


Автор: s1lver 26.11.2012, 17:53
Прошу помощи, никак не могу понять почему не происходит выполнение условия сравнения.

В реестре есть запись времени, которое потом сравнивается с текущим. Если равно, то происходит событие.

Если ставишь условие >= то условие выполняется, если == нет


Код

TRegistry *reg2=new TRegistry();
reg2->RootKey=HKEY_CURRENT_USER; 
reg2->OpenKeyReadOnly("Software\\Microsoft\\Windows\\CurrentVersion\\AutoTime");
AnsiString test; 
test=reg2->ReadString("Time");

if(Time() == StrToTime(test))
{
    ShowMessage("Alarm Clock");
}
reg2->CloseKey();  
delete reg2;       


 smile

Добавлено через 4 минуты и 17 секунд
упс, похоже решил


Код

TRegistry *reg2=new TRegistry(); 
reg2->RootKey=HKEY_CURRENT_USER; 
reg2->OpenKeyReadOnly("Software\\Microsoft\\Windows\\CurrentVersion\\AutoTime"); 
AnsiString test;  
test=reg2->ReadString("Time");

if(TimeToStr(Time())== test)
{
    ShowMessage("Alarm Clock");
}
reg2->CloseKey();
delete reg2;


Давно заметил, стоит только написать пост на форуме, как решение сразу находится само.  smile 

Автор: artsb 26.11.2012, 20:05
Цитата(s1lver @  26.11.2012,  17:53 Найти цитируемый пост)
если == нет

Возможно, дело в милисекундах.
Посмотрите, что будет в tm и сравните с тем, что будет в tm2:
Код

TDateTime tm = StrToTime(test);
TDateTime tm2 = Time();

(Естественно, смотреть нужно в дебагере. Или же выводите время в Label'ы, но не забудьте про милисекунды)

ЗЫ а сравнивать время в виде строк не очень хорошо, ИМХО.

Автор: s1lver 27.11.2012, 09:20
Сегодня протестировал, то что вчера получилось, на XP, Vista, 7, Server - под админом все отлично запускается вовремя. Но стоит пытаться запустить под обычным пользователем(Vista, 7, Server), ничего не происходит.   smile 

Автор: artsb 27.11.2012, 09:58
Цитата(s1lver @  27.11.2012,  09:20 Найти цитируемый пост)
 ничего не происходит.

Что дебагер говорит?

Автор: s1lver 28.11.2012, 07:27
Я сначала подумал что это из-за uac но, на протестированных компах (83 штуки) под разными пользователями все отлично. Хотя не запускается на проф версии винды, а тестировал на домашней расширенной и базовой. Не думаю что там большая разница есть. smile 

Сервер решилась проблема добавления прав на запуск программе.

Есть еще подозрение на бесплатный антивирус от майкрософта, который стоит у клиента.

Цитата

Что дебагер говорит? 


До отладчика не дошел вчера. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)