Russian Qt Forum
Ноябрь 27, 2024, 01:42
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Общие вопросы
>
Сигнал Новый день
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Сигнал Новый день (Прочитано 4822 раз)
onlik
Гость
Сигнал Новый день
«
:
Февраль 28, 2010, 00:42 »
Всем привет,
Подскажите, есть ли сигнал оповещающий, что начался новый день?
Теоретически можно сделать это самому, первый просто способ, это циклом проверять текущее время (мне кажется, что это ресурсо затратно)
Второй способ, это установить таймер с интервалом 24:00:00-текущее время, но тоже проблема, если пользователь сменит время во время выполнения программы.
Какие это могут быть решения или циклом это проще всего? Не хочется, что бы у пользователя ресурсы забирались лишние, программка простенькая и висит все время в трее.
Записан
Alex Custov
Джедай : наставник для всех
Offline
Сообщений: 2063
Re: Сигнал Новый день
«
Ответ #1 :
Февраль 28, 2010, 01:06 »
что мешает проверять дату раз в секунду по таймеру?
Записан
onlik
Гость
Re: Сигнал Новый день
«
Ответ #2 :
Февраль 28, 2010, 01:49 »
точность нужна очень большая до миллисекунд, т.е. интервал проверки должен быть < 200-300 ms.
И как проверять? т.е. какой алгоритм.
Код:
if (hour == 00 && min == 00 && sec == 0)
раз сработает и будет постоянно срабатывать. нужно делать дополнительные проверки.
Записан
alexman
Гость
Re: Сигнал Новый день
«
Ответ #3 :
Февраль 28, 2010, 08:30 »
Так обрабатывай события по таймеру раз в 100 мс. А для проверок используй, например, QDateTime!
Записан
xokc
Птица говорун
Offline
Сообщений: 976
Re: Сигнал Новый день
«
Ответ #4 :
Февраль 28, 2010, 18:12 »
Можно проверять раз в минуту, а по мере приближения к 0:00 интервал проверки уменьшать. А после срабатывания сразу увеличить до нужной величины.
Записан
MoPDoBoPoT
Гость
Re: Сигнал Новый день
«
Ответ #5 :
Февраль 28, 2010, 22:03 »
Цитата: xokc от Февраль 28, 2010, 18:12
Можно проверять раз в минуту, а по мере приближения к 0:00 интервал проверки уменьшать. А после срабатывания сразу увеличить до нужной величины.
Опять же, пользватель может изменить системное время (если только отслеживать это средствами API ОС, если это возможно, конечно).
Записан
SABROG
Гость
Re: Сигнал Новый день
«
Ответ #6 :
Февраль 28, 2010, 22:24 »
Сама ОС может менять время как минимум в двух случаях - корректировка часов по nntp, переход на летнее/зимнее время.
А из-за необходимости такой большой точности на компьютере придется поотрубать все программы, вынести проверку таймера в отдельный поток и всему этому делу присвоить реалтайм приоритет. Иначе какой-нибудь JavaScript в Firefox сожрет все ресурсы ОС и ваша программа проверит текущее состояние часов где-нибудь через пару минут.
Задача не разрешима с такими условиями.
Записан
onlik
Гость
Re: Сигнал Новый день
«
Ответ #7 :
Февраль 28, 2010, 23:37 »
сделаю интервал 500 мс и буду проверять когда h=0 m=0 s=0
спасибо всем, просто думал есть уже накатанные решения.
Записан
BRE
Гость
Re: Сигнал Новый день
«
Ответ #8 :
Февраль 28, 2010, 23:48 »
Цитата: onlik от Февраль 28, 2010, 23:37
сделаю интервал 500 мс и буду проверять когда h=0 m=0 s=0
И скорее всего периодически будешь "зевать" смену даты.
Никто не гарантирует, что QTimer будет вызываться с тем интервалом который задан.
Проверять лучше изменение дата, а не наступление момента h=0 m=0 s=0.
Записан
onlik
Гость
Re: Сигнал Новый день
«
Ответ #9 :
Февраль 28, 2010, 23:57 »
точно, спасибо!
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...