Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 5.00
Rise of Death
1 / 1 / 0
Регистрация: 10.03.2009
Сообщений: 24
#1

События по таймеру (в консоли) - C++

11.03.2009, 08:15. Просмотров 2323. Ответов 13
Метки нет (Все метки)

Как в консоли можно сделать что бы какой-то участок кода выполнялся через каждые n секунд, так, что бы программа завершала выполнение этого участка и начинала его выполнять снова, если он не успел выполнится (что бы, например, getch() не ждала вечно, пока пользователнь что-то нажмет).

По типу, как в билдере OnTimer
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
YurA_280784
Заблокирован
11.03.2009, 10:48     События по таймеру (в консоли) #2
Используй функцию
C++
1
void Sleep(DWORD dwMilliseconds);
- замораживает прогу на dwMilliseconds милисекуд,вот. Заголовок функции находится в хедере <winbase.h>
Rise of Death
1 / 1 / 0
Регистрация: 10.03.2009
Сообщений: 24
11.03.2009, 11:12  [ТС]     События по таймеру (в консоли) #3
А как сделать, что бы прога не ждала вечно пока я нажму какую-нибудь клавишу (если я поставлю че-нить вроде getch()), а просто через какой-то промежуток времени пропускала данный фрагменрт кода?
RazorQ
576 / 343 / 9
Регистрация: 06.02.2009
Сообщений: 1,386
11.03.2009, 11:23     События по таймеру (в консоли) #4
Так тебе же YurA_280784 уже сказал. Поставь эту функцию в цикл и все.
Rise of Death
1 / 1 / 0
Регистрация: 10.03.2009
Сообщений: 24
11.03.2009, 12:14  [ТС]     События по таймеру (в консоли) #5
Вот написал програмку:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream.h>
#include <winbase.h>
#include <conio.h>
void main()
{
int i=0;
while(true)
{
 
Sleep(50);
cout<<i<<endl;
i++;
getch();
}
 
}
При компиляции выдает кучу ошибок (непонятных).

Добавлено через 6 минут 23 секунды
Код
Info :Compiling C:\Documents and Settings\АдМиНчЕг\Рабочий стол\Лабы 2 семестр\Тест.cpp
Error:  winbase.h(199,21):Type name expected
Error:  winbase.h(199,21):Declaration missing ;
Error:  winbase.h(200,25):Type name expected
Error:  winbase.h(200,25):Multiple declaration for '_OVERLAPPED::DWORD'
Error:  winbase.h(199,25):Earlier declaration of '_OVERLAPPED::DWORD'
Error:  winbase.h(200,25):Declaration missing ;
Error:  winbase.h(201,19):Type name expected
Error:  winbase.h(201,19):Multiple declaration for '_OVERLAPPED::DWORD'
Error:  winbase.h(200,19):Earlier declaration of '_OVERLAPPED::DWORD'
Error:  winbase.h(201,19):Declaration missing ;
Error:  winbase.h(202,23):Type name expected
Error:  winbase.h(202,23):Multiple declaration for '_OVERLAPPED::DWORD'
Error:  winbase.h(201,23):Earlier declaration of '_OVERLAPPED::DWORD'
Error:  winbase.h(202,23):Declaration missing ;
Error:  winbase.h(203,19):Type name expected
Error:  winbase.h(203,19):Declaration missing ;
Error:  winbase.h(207,18):Type name expected
Error:  winbase.h(207,18):Declaration missing ;
Error:  winbase.h(208,32):Type name expected
Error:  winbase.h(208,32):Declaration missing ;
Error:  winbase.h(209,24):Type name expected
Error:  winbase.h(209,24):Declaration missing ;
Error:  winbase.h(213,20):Type name expected
Error:  winbase.h(213,20):Declaration missing ;
Error:  winbase.h(214,19):Type name expected
Error:  winbase.h(214,19):Too many error or warning messages
Gravity
562 / 556 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
11.03.2009, 14:37     События по таймеру (в консоли) #6
Не winbase.h, а windows.h.
Rise of Death
1 / 1 / 0
Регистрация: 10.03.2009
Сообщений: 24
11.03.2009, 20:23  [ТС]     События по таймеру (в консоли) #7
а как сделать что бы программа не ждала вечно, пока я нажму клавишу (как в приведеной мною программе), а подождав какой-то время пропукала участок кода, если не совершается никаких действий?
DanUnited
Программист TH
289 / 144 / 7
Регистрация: 06.01.2009
Сообщений: 537
11.03.2009, 20:36     События по таймеру (в консоли) #8
а сам TTimer нельзя создать в консоли?? Это ж вроде невизуальный компонент.
Добавить только ExtCtrls.hpp .... или нет???
YurA_280784
Заблокирован
12.03.2009, 10:19     События по таймеру (в консоли) #9
Ребята чё вы паритесь просто windows.h подключите и всё, понятно что ошибки лезут из-за того что чего-то не хватает. Вообще советую windows.h подключать всегда, на всякий случай

Добавлено через 3 минуты 5 секунд
Ваще Rise of Death лови

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream.h>
#include <windows.h>
#include <winbase.h>
 
void main()
{
    int i=0;
    while(true)
    { 
        cout<<i<<"\r\n";
        i++;
        Sleep(5);
    } 
}
Добавлено через 1 минуту 46 секунд
#include <iostream.h>
#include <windows.h>
#include <winbase.h>

Какя -то параша вышла когда код С++ отметил извиняюсь(правда єт не мои бока, админы обратите внимане что коверкается код в теге С++!!!)

Добавлено через 1 минуту 20 секунд
<> Какой-то писец, чё скобки &lt; какой-то фигнёй выходят?
RazorQ
576 / 343 / 9
Регистрация: 06.02.2009
Сообщений: 1,386
12.03.2009, 10:30     События по таймеру (в консоли) #10
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream.h>
#include <windows.h>
#include <winbase.h>
 
void main()
{
    int i=0;
    while(true)
    { 
        cout<<i<<"\r\n";
        i++;
        Sleep(5);
    } 
}
Я нашел ошибку. Вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream.h>
#include <windows.h>
#include <winbase.h>
 
int main()
{
    int i=0;
    while(true)
    { 
        cout<<i<<"\r\n";
        i++;
        Sleep(5);
    }
return 0; 
}
Всево-то Стандартный C++ требует чтобы программа возвращала 0.
Ensase
Флудер
191 / 29 / 5
Регистрация: 23.03.2007
Сообщений: 335
12.03.2009, 11:35     События по таймеру (в консоли) #11
для того чтобы выполнять что-то по таймеру нужно использовать функцию SetTimer()
посмотри в msdn про неё
YurA_280784
Заблокирован
12.03.2009, 12:58     События по таймеру (в консоли) #12
void main() Катит, вообще кто сказал что майн должен что-то возвращать или быть с параметрами
делаю на Visual Studio 6.0 ConsoleAplication - НЕ НАДО ИСКАТЬ ЕРРОР ГДЕ ЕГО НЕТУ!
Rise of Death
1 / 1 / 0
Регистрация: 10.03.2009
Сообщений: 24
12.03.2009, 16:49  [ТС]     События по таймеру (в консоли) #13
Спасибо, эту часть я понял.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.03.2009, 08:58     События по таймеру (в консоли)
Еще ссылки по теме:
C++ Привязка к системному таймеру
Вызов функции по таймеру C++
C++ Пропадание текста по таймеру
C++ Запуск функции по таймеру
Вызов функции по таймеру в с++ C++

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

Или воспользуйтесь поиском по форуму:
RazorQ
576 / 343 / 9
Регистрация: 06.02.2009
Сообщений: 1,386
13.03.2009, 08:58     События по таймеру (в консоли) #14
Цитата Сообщение от YurA_280784 Посмотреть сообщение
void main() Катит, вообще кто сказал что майн должен что-то возвращать или быть с параметрами
делаю на Visual Studio 6.0 ConsoleAplication - НЕ НАДО ИСКАТЬ ЕРРОР ГДЕ ЕГО НЕТУ!
Ладно ладно. Но у меня на DevC++ не работает без int
Yandex
Объявления
13.03.2009, 08:58     События по таймеру (в консоли)
Ответ Создать тему
Опции темы

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