С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
Xerotico
0 / 0 / 0
Регистрация: 25.01.2014
Сообщений: 14
1

Бесконечный таймер

25.01.2014, 14:19. Просмотров 1121. Ответов 4
Метки нет (Все метки)

Нужно сделать бесконечно работающий таймер, который будет выполнять некоторый код спустя равные промежутки времени, например:
C++
1
2
3
4
5
6
7
8
9
10
11
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
while(true)
{
if (TDay==0){Label1->Caption="Ночь";}
if (TDay==1){Label1->Caption="Утро";}
if (TDay==2){Label1->Caption="День";}
if (TDay==3){Label1->Caption="Вечер";}
if (TDay!=3){TDay++;}{TDay=0;}
}
}
Если это выполнить - программа повиснет.
Ещё до того, как я узнал про таймер были такие же попытки, но со Sleep(5000) на конце. Так программа тоже висла.
Была попытка делать Timer1->Enabled=true в конце цикла, но таймер работал только 1 раз.






Надеюсь на вашу помощь.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.01.2014, 14:19
Ответы с готовыми решениями:

Бесконечный массив
Помогите пожалуйста найти ошибку. По нажатию на кнопку добавить срабатывает...

Бесконечный цикл пока...
Подскажите как сделать Бесконечный цикл пока не нажата клавиша? ...

Бесконечный цикл внутри формы
Народ, пожалуйста, подскажите что я делаю неправильно. Нужно чтобы непрерывно...

Бесконечный цикл в результате дополнительных вычислений
Без 48 строки все работает, но с ней цикл становится бесконечным, потому как не...

Таймер?
Всем привет. Мне нужна помощь.Есть таймер,по горячей клавише он начинает...

4
Dam33
38 / 23 / 7
Регистрация: 04.10.2012
Сообщений: 117
25.01.2014, 14:27 2
C++
1
2
3
4
5
6
7
8
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
   if (FormatDateTime("hh", Now())>=0 && FormatDateTime("hh", Now())<=7)   { Label1->Caption="ночь";}
   if (FormatDateTime("hh", Now())>=8 && FormatDateTime("hh", Now())<=10)  { Label1->Caption="утро";}
   if (FormatDateTime("hh", Now())>=11 && FormatDateTime("hh", Now())<=17) { Label1->Caption="день";}
   if (FormatDateTime("hh", Now())>=18 && FormatDateTime("hh", Now())<=20) { Label1->Caption="вечер";}
   if (FormatDateTime("hh", Now())>=21 && FormatDateTime("hh", Now())<=24) { Label1->Caption="ночь";}
}
1
Xerotico
0 / 0 / 0
Регистрация: 25.01.2014
Сообщений: 14
25.01.2014, 15:16  [ТС] 3
Вы меня не так поняли, мне нужно не в реальном времени, а, допустим, чтобы через 5 минут менялось с ночи на утро и тп.

Добавлено через 42 минуты
Цитата Сообщение от Dam33 Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
   if (FormatDateTime("hh", Now())>=0 && FormatDateTime("hh", Now())<=7)   { Label1->Caption="ночь";}
   if (FormatDateTime("hh", Now())>=8 && FormatDateTime("hh", Now())<=10)  { Label1->Caption="утро";}
   if (FormatDateTime("hh", Now())>=11 && FormatDateTime("hh", Now())<=17) { Label1->Caption="день";}
   if (FormatDateTime("hh", Now())>=18 && FormatDateTime("hh", Now())<=20) { Label1->Caption="вечер";}
   if (FormatDateTime("hh", Now())>=21 && FormatDateTime("hh", Now())<=24) { Label1->Caption="ночь";}
}
И ваше решение работает только 1 цикл, без повторов
0
Lelik-pahan
1364 / 782 / 175
Регистрация: 25.11.2009
Сообщений: 1,597
Завершенные тесты: 1
25.01.2014, 19:40 4
цикл while тут не нужен. Если не отключать таймер. то он будет работать без остановки, так что Timer1->Enabled=true тоже не нужно.
А ещё после последнего условия не хватает else. Так, если переменная не равна трём, она увеличит своё значение на 1, но после этого сразу же станет равна нулю. TDay=0; выполняется ВСЕГДА

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
    if (TDay == 0)
        Label1->Caption = "Ночь";
    else if (TDay == 1)
        Label1->Caption = "Утро";
    else if (TDay == 2)
        Label1->Caption = "День";
    else if (TDay == 3)
        Label1->Caption="Вечер";
 
    if (TDay != 3)
        TDay++;
    else
        TDay=0;
}
1
Xerotico
0 / 0 / 0
Регистрация: 25.01.2014
Сообщений: 14
25.01.2014, 19:53  [ТС] 5
Спасибо, всё работает, тему можно прикрыть.
0
25.01.2014, 19:53
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.01.2014, 19:53

Таймер на с++
Здравствуйте, мне нужно написать таймер на с++ с помощью классов, методов,...

Таймер
Ребят помогите привязать таймер к программе. #include &quot;pch.h&quot; #pragma...

Таймер
Здравствуйте! У меня такой вопрос к вам: есть такой код(он в таймере): ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru