Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Коды клавиш 
:(
    Опции темы
mr.Anderson
Дата 20.8.2005, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: нет
Всего: 128



Хотя я Паскаль и не учил, но, по-моему, если не алфавитно-цифровая клавиша была нажата, то нажатие будет пропущено. Ведь их код имеет две составляющих, как мне выше объяснили - 0 и собственно код клавиши. Так что ваша программа не очень подходит.


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
assassin
Дата 20.8.2005, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 19.7.2005

Репутация: нет
Всего: нет



Объясните дураку, почему вот этот кусок не работает так, как надо:

Код

#include <stdio.h>
#include <conio.h>

int main()
{
    char a;
    a = getch();
    if (a == 0x26)
    {
        printf("UP");
    }
    return 0;
}


Нужно обработать нажатие клавиши "Вверх", и если она была нажата - вывести сообщение. Компилятор у меня Borland C

Это сообщение отредактировал(а) assassin - 20.8.2005, 13:13
PM MAIL   Вверх
cardinal
Дата 20.8.2005, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 2
Всего: 99



Цитата(assassin @ 20.8.2005, 11:04)
почему вот этот кусок не работает так, как надо

Потому, что getch возвращает не то, что ты ожидаешь... А именно -32, а не 38, как ты указал в if.

Можно написать так:
Код

#include <stdio.h>
#include <conio.h>

int main()
{
    int a;
    a = getch();
    if (a == 0xe0)
    {
        printf("UP\n");
    }
    return 0;
}




--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
__Sergey__
Дата 21.8.2005, 01:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 67
Регистрация: 21.1.2005

Репутация: нет
Всего: 4



PM MAIL   Вверх
Dr.Wisdom
Дата 21.8.2005, 22:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 145
Регистрация: 6.1.2005

Репутация: нет
Всего: 0



sim7
Цитата

Ведь их код имеет две составляющих, как мне выше объяснили - 0 и собственно код клавиши

Там есть проверка на ноль. readkey читает только первый байт, ели клавиша управляющая она посылает два байта. Читаем второй раз.
--------------------
VIVA LA RESISTANCE
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0431 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.