32 / 30 / 4
Регистрация: 01.02.2014
Сообщений: 878
|
|
1 | |
While срабатывает 2 раза, почему?19.05.2014, 21:07. Показов 2360. Ответов 15
Метки нет (Все метки)
Сообственно код
void main() { while(true){ cout<<"|y|"; _getch(); } } нажимаю клавишу, выводит по 2 буквы, почему? как сделать чтобы один раз за цикл выводилось значение?
0
|
19.05.2014, 21:07 | |
Ответы с готовыми решениями:
15
Почему срабатывает rtl Не срабатывает условие. Почему? Почему не срабатывает getline() ? Почему не срабатывает EOF |
7789 / 6556 / 2984
Регистрация: 14.04.2014
Сообщений: 28,657
|
|
19.05.2014, 21:10 | 2 |
У тебя бесконечный цикл.
0
|
32 / 30 / 4
Регистрация: 01.02.2014
Сообщений: 878
|
|
19.05.2014, 21:14 [ТС] | 3 |
nmcf, я понимаю, но по логке, он выводит 1 букву, я нажимаю кнопку, он выводит снова 1 букву , а в реале после нажатия выводит сразу 2, как так?
0
|
7789 / 6556 / 2984
Регистрация: 14.04.2014
Сообщений: 28,657
|
|
19.05.2014, 21:20 | 4 |
Попробуй _cputs() вместо cout.
0
|
32 / 30 / 4
Регистрация: 01.02.2014
Сообщений: 878
|
|
19.05.2014, 21:25 [ТС] | 6 |
nmcf, а смысл? вопров другом, cout<<"|y|"; - это для наглядности, на самом деле у меня там куча кода которая по 2 раза вплняется
Тамика, а что с ним не так?
0
|
32 / 30 / 4
Регистрация: 01.02.2014
Сообщений: 878
|
|
19.05.2014, 21:29 [ТС] | 8 |
я тут заметил, если нажимаю например стрелочку, то 2 раза страбатывает, если букву то 1, как сделать чтобы при нажатии на стрелочку цыкл 1 раз срабатывал?
0
|
7789 / 6556 / 2984
Регистрация: 14.04.2014
Сообщений: 28,657
|
|
19.05.2014, 21:39 | 9 |
Для таких клавиш первый байт должен быть ноль. Вот по нему и ориентируйся. Если ноль, то делай второй getch().
0
|
32 / 30 / 4
Регистрация: 01.02.2014
Сообщений: 878
|
|
19.05.2014, 21:41 [ТС] | 11 |
а как сделать чтобы 1 была, вторая?
0
|
Заблокирован
|
||||||
19.05.2014, 21:43 | 12 | |||||
Сообщение было отмечено mh-coder как решение
Решение
не только ноль, но и 0xE0 - тоже учитывать надо....
Правда не понятно, что ваще ТС хочет сделать .... Добавлено через 1 минуту
1
|
7789 / 6556 / 2984
Регистрация: 14.04.2014
Сообщений: 28,657
|
|
19.05.2014, 21:46 | 13 |
Я подумал, что 0xE0 для getwch().
0
|
32 / 30 / 4
Регистрация: 01.02.2014
Сообщений: 878
|
|
19.05.2014, 21:57 [ТС] | 14 |
newbie666, клас, спс, то что нужно, а можешь только обьяснить как оно раотает? почеу цикл по 1 разу выводит букву и почему я ввожу клавишу 1 раз и результат нормальный могу взять из второго _getch()??
0
|
Заблокирован
|
|
19.05.2014, 22:20 | 15 |
ну потому что там проверка есть, если сложна кнопка нажата, результат нажатия которой нужно выдаивать из гетчара два раза - то и вызывается второй вызов гетчара, что "подоить" поток ввода и вытащить оттуда всё. Иначе, при повторном заходе в вайл у юзера не спросят ввести символ, т
.к. в потоке остался одни символ от сложной кнопки и гетчар сразу вернёт остаток без всяких пауз.
ну потому что у составной клавиши сложной сам код как раз и идёт вторым байтом в тотоке
1
|
алкокодер
157 / 153 / 41
Регистрация: 27.12.2012
Сообщений: 550
|
|
19.05.2014, 22:25 | 16 |
mh-coder, почитайте про отлавливание нажатий, про хуки(Hooks).
1
|
19.05.2014, 22:25 | |
19.05.2014, 22:25 | |
Помогаю со студенческими работами здесь
16
Почему не срабатывает инкремент? Почему два раза срабатывает слот у наследника? Почему при нажатии клавиши Enter alert срабатывает 3 раза? JS срабатывает со 2 раза Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |