Russian Qt Forum
Ноябрь 27, 2024, 01:17 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Сигнал Новый день  (Прочитано 4814 раз)
onlik
Гость
« : Февраль 28, 2010, 00:42 »

Всем привет,
Подскажите, есть ли сигнал оповещающий, что начался новый день?
Теоретически можно сделать это самому, первый просто способ, это циклом проверять текущее время (мне кажется, что это ресурсо затратно)
Второй способ, это установить таймер с интервалом 24:00:00-текущее время, но тоже проблема, если пользователь сменит время во время выполнения программы.
Какие это могут быть решения или циклом это проще всего? Не хочется, что бы у пользователя ресурсы забирались лишние, программка простенькая и висит все время в трее.
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #1 : Февраль 28, 2010, 01:06 »

что мешает проверять дату раз в секунду по таймеру?
Записан
onlik
Гость
« Ответ #2 : Февраль 28, 2010, 01:49 »

точность нужна очень большая до миллисекунд, т.е. интервал проверки должен быть < 200-300 ms.
И как проверять? т.е. какой алгоритм.
Код:
if (hour == 00 && min == 00 && sec == 0)
раз сработает и будет постоянно срабатывать. нужно делать дополнительные проверки.
Записан
alexman
Гость
« Ответ #3 : Февраль 28, 2010, 08:30 »

Так обрабатывай события по таймеру раз в 100 мс. А для проверок используй, например, QDateTime!
Записан
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #4 : Февраль 28, 2010, 18:12 »

Можно проверять раз в минуту, а по мере приближения к 0:00 интервал проверки уменьшать. А после срабатывания сразу увеличить до нужной величины.
Записан
MoPDoBoPoT
Гость
« Ответ #5 : Февраль 28, 2010, 22:03 »

Можно проверять раз в минуту, а по мере приближения к 0:00 интервал проверки уменьшать. А после срабатывания сразу увеличить до нужной величины.
Опять же, пользватель может изменить системное время (если только отслеживать это средствами API ОС, если это возможно, конечно).
Записан
SABROG
Гость
« Ответ #6 : Февраль 28, 2010, 22:24 »

Сама ОС может менять время как минимум в двух случаях - корректировка часов по nntp, переход на летнее/зимнее время.

А из-за необходимости такой большой точности на компьютере придется поотрубать все программы, вынести проверку таймера в отдельный поток и всему этому делу присвоить реалтайм приоритет. Иначе какой-нибудь JavaScript в Firefox сожрет все ресурсы ОС и ваша программа проверит текущее состояние часов где-нибудь через пару минут.

Задача не разрешима с такими условиями.
Записан
onlik
Гость
« Ответ #7 : Февраль 28, 2010, 23:37 »

сделаю интервал 500 мс и буду проверять когда h=0 m=0 s=0
спасибо всем, просто думал есть уже накатанные решения.
Записан
BRE
Гость
« Ответ #8 : Февраль 28, 2010, 23:48 »

сделаю интервал 500 мс и буду проверять когда h=0 m=0 s=0
И скорее всего периодически будешь "зевать" смену даты.
Никто не гарантирует, что QTimer будет вызываться с тем интервалом который задан.
Проверять лучше изменение дата, а не наступление момента h=0 m=0 s=0.
Записан
onlik
Гость
« Ответ #9 : Февраль 28, 2010, 23:57 »

точно, спасибо!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.055 секунд. Запросов: 23.