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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.91
YourLastSong
1 / 1 / 0
Регистрация: 12.12.2010
Сообщений: 112
#1

Как использовать таймер - C++

21.12.2010, 17:01. Просмотров 1617. Ответов 15
Метки нет (Все метки)

Здравствуйте, господа.

Можно ли каким-либо образом использовать таймер в программе вообще?

Увидел описание таймера, однако не нашёл timer.h.

Мне необходимо, чтобы программа в том случае, если пользователь ничего не делает опр. промежуток времени в течение getch (), выдавала сообщение.

Заранее благодарю за возможные ответы.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.12.2010, 17:01     Как использовать таймер
Посмотрите здесь:

Использовать время (таймер) в С++ консоль - C++
Добрый вечер! Задача такая: есть несколько сортировок (пузырьком, быстрой, шелл), нужно засечь время работы этих сортировок. Как...

как сделать таймер? - C++
вообщем нужно сделать таймер, для консольного приложения, если все время прошло, то выводится одно сообщение, если во время таймера нажали...

Как организовать таймер? - C++
Как мне в VC++ организовать таймер, задержку или что то в этом роде... Желательно не очень сложно. Длагодарю.

Как написать свой таймер? - C++
Чтобы функция выполнялась скажем каждые 200 миллисекунд. Сейчас WM_TIMER делает это, но он не подходит. Искал по многим запросам в гугле и...

Сделать таймер как в Lost - C++
Подскажите где можно найти программу таймер как в сериале Лост, что б она требовала вводить код 4 8 15 16 23 42 каждые 108 минут Ну я...

Как подключить таймер к игре? - C++
Как подключить таймер к игре чтоб она выключалась после конца времени ?

Пузырьковая сортировка. Как реализовать таймер - C++
Пузырьковая сортировка. Как реализовать таймер? #include <vcl.h> #include <conio.h> #include <iostream.h> #pragma hdrstop ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
cibertronic
256 / 143 / 13
Регистрация: 27.12.2009
Сообщений: 893
21.12.2010, 17:24     Как использовать таймер #2
где хочешь использовать таймер? на форме или в консоле?
YourLastSong
1 / 1 / 0
Регистрация: 12.12.2010
Сообщений: 112
21.12.2010, 17:26  [ТС]     Как использовать таймер #3
Если есть такая возможность, то в консоли.
Kastaneda
Форумчанин
Эксперт С++
4479 / 2841 / 226
Регистрация: 12.12.2009
Сообщений: 7,222
Записей в блоге: 1
Завершенные тесты: 1
21.12.2010, 17:37     Как использовать таймер #4
YourLastSong, любые ф-ции ввода ждут ввода, таким образом посчитать сколько длится ожидание невозможно (правда я не знаю о каком таймере вы говорите, может какая-то левая библиотека умеет это делать). Могу предложить низкоуровневые API ввода\вывода. Через них можно даже нажатие и отпускание клавиши перехватить)

Не по теме:

ща тему найду, когда с АПИ разбирался, как раз что-то похожее спрашивал.

YourLastSong
1 / 1 / 0
Регистрация: 12.12.2010
Сообщений: 112
21.12.2010, 17:40  [ТС]     Как использовать таймер #5
Да, точно, про это я не подумал как-то.

Постарайтесь поискать, если не сложно, однако надо именно для консоли.
Kastaneda
Форумчанин
Эксперт С++
4479 / 2841 / 226
Регистрация: 12.12.2009
Сообщений: 7,222
Записей в блоге: 1
Завершенные тесты: 1
21.12.2010, 17:42     Как использовать таймер #6
вот, там есть пример кода - к нему можно хоть таймер прикрутить, хоть вывод строки, если клавиша не нажата.

Добавлено через 20 секунд
Цитата Сообщение от YourLastSong Посмотреть сообщение
надо именно для консоли
оно самое)

Добавлено через 46 секунд
в 5-ом посте рабочий вариант кода.
cibertronic
256 / 143 / 13
Регистрация: 27.12.2009
Сообщений: 893
21.12.2010, 17:45     Как использовать таймер #7
тут была тема, найти не могу, короче там отсчет начинается сразу после пуска программы(обращаясь к системному), далее если небыло использование никакой функции, после определенного времени, например 10 минут, срабатывает функция exit(0);

жестко, но работало....

может и не в этом форуме... чет найти не могу...
YourLastSong
1 / 1 / 0
Регистрация: 12.12.2010
Сообщений: 112
21.12.2010, 17:50  [ТС]     Как использовать таймер #8
Выдаётся вот такое сообщение:

Код
'c' : undeclared identifier
Kastaneda
Форумчанин
Эксперт С++
4479 / 2841 / 226
Регистрация: 12.12.2009
Сообщений: 7,222
Записей в блоге: 1
Завершенные тесты: 1
21.12.2010, 17:59     Как использовать таймер #9
Вот то, что вам нужно:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream> 
#include <windows.h>
using namespace std;
void MyGetch();
const int C=20;
int main() {
   cout<<"Press any key..."<<endl;
   MyGetch();
   system("pause");
   return 0;
}
void MyGetch(){
    HANDLE hstd=GetStdHandle(STD_INPUT_HANDLE);
    INPUT_RECORD IR[C];
     DWORD read;
     while(PeekConsoleInputA(hstd,IR,C,&read)){
             Sleep(1000);//здесь можно задавать время
             bool F=false;
             for(int i=0;i<read;i++){
                 if(IR[i].EventType==KEY_EVENT){
                     F=true;
                     break;}        
             }
             if(F)break;
             else cout<<"Don't be stupid!"<<endl;
     }
}
YourLastSong
1 / 1 / 0
Регистрация: 12.12.2010
Сообщений: 112
21.12.2010, 19:14  [ТС]     Как использовать таймер #10
А как сделать проверку на нажатие клавиши 'a' или 'b' в EventType==KEY_EVENT, не подскажете?

Понял только, как для пробела сделать, но мне необходимо использовать нажатие клавиш 'a' или 'b' сейчас.
Kastaneda
Форумчанин
Эксперт С++
4479 / 2841 / 226
Регистрация: 12.12.2009
Сообщений: 7,222
Записей в блоге: 1
Завершенные тесты: 1
21.12.2010, 19:27     Как использовать таймер #11
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void MyGetch(){
    HANDLE hstd=GetStdHandle(STD_INPUT_HANDLE);
    INPUT_RECORD IR[C];
     DWORD read;
     while(PeekConsoleInputA(hstd,IR,C,&read)){
             Sleep(1000);
             bool F=false;
             for(int i=0;i<read;i++){
                 if(IR[i].EventType==KEY_EVENT){
                    if(IR[i].Event.KeyEvent.wVirtualKeyCode==0x41)
                     cout<<"You press a";
                    if(IR[i].Event.KeyEvent.wVirtualKeyCode==0x42)
                     cout<<"You press b";
                     F=true;
                     break;}        
             }
             if(F)break;
             else cout<<"Don't be stupied!"<<endl;
     }
}
YourLastSong
1 / 1 / 0
Регистрация: 12.12.2010
Сообщений: 112
21.12.2010, 19:53  [ТС]     Как использовать таймер #12
Код
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <windows.h>

using namespace std;

int x;
const int C=20;
char c;

void main()
{
	cout << "a - start" << endl << "b - quit";
	HANDLE hstd=GetStdHandle(STD_INPUT_HANDLE);
    INPUT_RECORD IR[C];
     DWORD read;
     while(PeekConsoleInputA(hstd,IR,C,&read)){
			 a1:
             Sleep(1);
			 x++;
             bool F=false;
             for(int i=0;i<read;i++){
                 if(IR[i].EventType==KEY_EVENT){
				 if(IR[i].Event.KeyEvent.wVirtualKeyCode==0x41)
                     system("cls");
                    if(IR[i].Event.KeyEvent.wVirtualKeyCode==0x42)
                     exit (EXIT_SUCCESS);
                     break;}        
             }
			 if (x > 8000)
			 {
			 cout << endl << endl << "You need to choose one of this menu points" << endl;
			 getch ();
			 x = 0;
			 goto a1;
			 }
     }
Большое спасибо.

Однако в том случае, если нажать любой другой символ, те символы распознаваться уже не будут вообще. Как это можно исправить?
Kastaneda
Форумчанин
Эксперт С++
4479 / 2841 / 226
Регистрация: 12.12.2009
Сообщений: 7,222
Записей в блоге: 1
Завершенные тесты: 1
21.12.2010, 20:06     Как использовать таймер #13
можно сделать отдельную ф-цию (как у меня в коде), и там сделать так, чтоб ф-ция возвращала прочитанный символ.
YourLastSong
1 / 1 / 0
Регистрация: 12.12.2010
Сообщений: 112
22.12.2010, 22:22  [ТС]     Как использовать таймер #14
Попробовал, не получилось почему-то.

Сможете показать у меня на примре, как это можно сделать, пожалуйста?

Добавлено через 14 часов 48 минут
Так сможет кто-нибудь помочь исправить, пожалуйста?
Kastaneda
Форумчанин
Эксперт С++
4479 / 2841 / 226
Регистрация: 12.12.2009
Сообщений: 7,222
Записей в блоге: 1
Завершенные тесты: 1
23.12.2010, 15:14     Как использовать таймер #15
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <Windows.h>
char MyGetch();
int main(){
    char a;
    a=MyGetch();
    std::cout<<"Function \"MyGetch()\" return "<<a<<std::endl;
    return 0;
}
char MyGetch(){
    const int C=20;
    HANDLE hstd=GetStdHandle(STD_INPUT_HANDLE);
    INPUT_RECORD IR[C];
    DWORD read;
     while(PeekConsoleInputA(hstd,IR,C,&read)){
             for(int i=0;i<read;i++)
                 if(IR[i].EventType==KEY_EVENT&&isprint(int(IR[i].Event.KeyEvent.wVirtualKeyCode)))
                    return IR[i].Event.KeyEvent.wVirtualKeyCode;  
            Sleep(1000);     
            std::cout<<"Don't be stupied!"<<std::endl;
     }
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.12.2012, 12:20     Как использовать таймер
Еще ссылки по теме:

Как реализовать таймер в консольном приложении? - C++
И как-нибудь без while и sleep, чтобы программа не висела. Пытался делать через winapi, но не понял как функцию, выполняемую при &quot;тикании&quot;...

Как сделать стабильный таймер в Windows XP,7,8 с задержкой в одну микросекунду? - C++
Собственно вопрос в топике, главное, чтоб таймер был стабилен и не скакал и чтоб задержка была в одну микросекунду. Тоесть возможно ли в...

Как вывести одно значение из массива list? Лучше использовать итератор или как-то по другому? - C++
Здравствуйте! Что бы вывести одно значения из массива list нужно использовать итератор или можно как то по другому?

Как приведенный код использовать как класс - C++
Добрый день! проблема в следующем: char* charTypes = { &quot;Add&quot;, &quot;Min&quot;, &quot;Mul&quot;, &quot;Div&quot;, &quot;Mod&quot;,// базовые операции с числами &quot;EQ&quot;,...

Указатели на функцию - как их использовать, как объявлять - C++
читаю книжку и столкнулся с указателями на функцию. автор пробегается в несколько страниц по ним, как их использовать, как объявлять. Но...


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

Или воспользуйтесь поиском по форуму:
Kastaneda
Форумчанин
Эксперт С++
4479 / 2841 / 226
Регистрация: 12.12.2009
Сообщений: 7,222
Записей в блоге: 1
Завершенные тесты: 1
18.12.2012, 12:20     Как использовать таймер #16
deleted

Не по теме:

вообще в другую тему писал

Yandex
Объявления
18.12.2012, 12:20     Как использовать таймер
Ответ Создать тему
Опции темы

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