Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Определение кода клавиатуры. Помогите справиться с простой задачей. 
V
    Опции темы
sysux
Дата 27.4.2006, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Люди добрые помогите правильно написать код, который выводит
в Label1->Caption соответствующий клавише код ANSI.

Это мой вариант:

Код

void __fastcall TForm1::Edit1KeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
    int a;
    a = StrToInt(Edit1->Text);
    Label1->Caption= IntToStr(a);
}


Но почему то компилятор ругается что  символ не является целым.
Подскажите, как быть и что я не так сделал. 
PM MAIL   Вверх
_hunter
Дата 27.4.2006, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



как именно ругается и как именно выгладит код? 


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
sysux
Дата 27.4.2006, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Ругается он так:

       Project Project1.exe raised exception class EConvertError with
       message "к' is not a valid integer value'. Process stopped. Use
       Step or run to continue.

А здесь весь Unit1:
Код

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Edit1KeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
    int a;
    a = StrToInt(Edit1->Text);
    Label1->Caption= IntToStr(a);
}
//---------------------------------------------------------------------------

         
PM MAIL   Вверх
s_a_s_h_a
Дата 27.4.2006, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



вместо
Код

a = StrToInt(Edit1->Text);

напиши
Код

int a = (int)Edit1->Text.c_str()[0]; // код первого символа
 
PM MAIL   Вверх
sysux
Дата 27.4.2006, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Работает. Только почему на клавиши Enter или например Del выводит значение 0. 
PM MAIL   Вверх
_hunter
Дата 27.4.2006, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



потому как ты бредом занимаешся.
твой код можно и так:
Label1->Caption = Edit1->Text;
написать 


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
sysux
Дата 27.4.2006, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Написать конечно можно и так, но когда я ввожу в поле Edit например
символ 'g', то в Label выводится этот же символ, а мне нужен его ANSI 
код. 
PM MAIL   Вверх
s_a_s_h_a
Дата 27.4.2006, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



sysux, ты что поверил в предыдущий пост _hunter'a как в совет по твоей проблеме? smile 

А вообще, я тоже не совсем понимаю, зачем тебе это нужно. 

Это сообщение отредактировал(а) s_a_s_h_a - 27.4.2006, 17:50
PM MAIL   Вверх
_hunter
Дата 27.4.2006, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



а каким боком тут клавиатура прилеплена?
и при чем тут enter? 


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
likehood
Дата 27.4.2006, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


666
**


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

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



Цитата(sysux @  27.4.2006,  17:21 Найти цитируемый пост)
 Только почему на клавиши Enter или например Del выводит значение 0. 

Может лучше обрабатывать событие OnKeyPress и выводить виртуальный код нажатой клавиши? 
PM MAIL   Вверх
sysux
Дата 27.4.2006, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Ну например у меня прога, в Edit которой я ввел
какие то цифры, теперь мне надо по нажатии Enter или
скажем Shift или другой клавиши произвести вычисление. 
PM MAIL   Вверх
_hunter
Дата 27.4.2006, 18:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



??? понял еще меньше...
зачем, в таком случае, ASCII-коды? или ты реакцию на нажатие в edit' e хочеш сделать? 


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
tramp
Дата 28.4.2006, 05:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Я не совсем понял, зачем нужно пытаться перевести содержимое всего Edit в код?

void __fastcall TForm1::Edit1KeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
Label1->Caption=(int)Key;
}
 
PM MAIL   Вверх
NYX
Дата 29.9.2009, 22:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 165
Регистрация: 9.1.2007
Где: Россия, Москва

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



в интернете есть аски коды клавишь зачем заморочку такую делать smile если надо узнать аски достаточно просто найти таблицу в jpg и на флешке носить smile меньше места будет занимать чем прога smile 

в tech help есть коды клавишь ВСЕ и организованны в виде очень удобной таблицы smile
а кстати для анси мона сделать так smile

AnsiString MyKey;
for (unsigned char cKey = 0; cKey < 256; cKey++)
{
MyKey = MyKey + "(" + IntToStr(cKey) + ") - (" + cKey + ")";
Memo1->Lines->Add(MyKey);
MyKey = "";
}

Это сообщение отредактировал(а) NYX - 29.9.2009, 22:50
--------------------
'long long long' is too long for GC
PM   Вверх
SVN74
Дата 29.9.2009, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Правильно будет использовать другой обработчик:
Код

void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
    Label1->Caption = Key;
}


Это сообщение отредактировал(а) SVN74 - 29.9.2009, 23:26
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


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

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


 




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


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

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