Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Коды символов

11K
31 октября 2005 года
Evgen2877
11 / / 11.09.2005
Подскажите, Please команду получения ASCII кода символа и обратно... с литературой напряженка.
и если можно, команду "отлова" кода нажатой клавиши.
спасибо
13K
31 октября 2005 года
fcxSanya
11 / / 31.10.2005
Ну для получения кода символа:
Edit2->Text = IntToStr(Edit1->Text[1]);
А для получения символа из его кода:
Edit2->Text = char(StrToInt(Edit1->Text));
299
31 октября 2005 года
3D Bob
885 / / 18.04.2005
Код символа
 
Код:
int i = int('a');

Обратно
 
Код:
char a = char(97);
13K
31 октября 2005 года
fcxSanya
11 / / 31.10.2005
Цитата:
Originally posted by Evgen2877
и если можно, команду "отлова" кода нажатой клавиши.



А ты что хочешь "отлавливать": клавиши в отдельном компоненте, своей программе или по всей системе?

11K
01 ноября 2005 года
Evgen2877
11 / / 11.09.2005
Цитата:
Originally posted by fcxSanya
А ты что хочешь "отлавливать": клавиши в отдельном компоненте, своей программе или по всей системе?



клавиши в своей программе
т.е. например, цикл до нажатия определенной клавиши (типа Esc), при нажатии любой другой клавиши переменной присваивается ее код (что-то типа ReadKey в старом добром Pascal-е)

спасибо всем ответившим за помощь.

11K
01 ноября 2005 года
Evgen2877
11 / / 11.09.2005
Цитата:
Originally posted by 3D Bob
Код символа
 
Код:
int i = int('a');

Обратно
 
Код:
char a = char(97);



т.е. в первом случае i присваивается код буковки "а", а во втором переменной а - символ с кодом 97?
(я правильно понял?)

299
01 ноября 2005 года
3D Bob
885 / / 18.04.2005
Цитата:
Originally posted by Evgen2877
т.е. в первом случае i присваивается код буковки "а", а во втором переменной а - символ с кодом 97?
(я правильно понял?)


Почти. Я про то что нету никакой разницы между символов и его кодом.
Все зависит от того как система воспримет тебя.

можно было бы и просто написать

char a = 97;
int b = 'a';

после этого выполни ShowMessage(a); ShowMessage(b);
Можно так же сделать так.
ShowMessage((int)'a'); и тебе выведетеся код символа а и наоборот
ShowMessage((char)97);
А насчет команды отлова, заюзай АПИ.

13K
02 ноября 2005 года
fcxSanya
11 / / 31.10.2005
Для "отлова" клавиш можешь попробовать что-то типа этого:

char oldkeystate[256],keystate[256];

__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
GetKeyboardState(oldkeystate);
Application->OnIdle = &IdleHandler;
}

void __fastcall TForm1::IdleHandler(TObject *Sender,bool &Done) {
Done = false;
GetKeyboardState(keystate);
for(int i=0; i<256; i++) if (oldkeystate!=keystate)
{ Label1->Caption = IntToStr(i); break; }
for(int i=0; i<256; i++) oldkeystate = keystate;
}
299
02 ноября 2005 года
3D Bob
885 / / 18.04.2005
Цитата:
Originally posted by fcxSanya
Для "отлова" клавиш можешь попробовать что-то типа этого:

char oldkeystate[256],keystate[256];

__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
GetKeyboardState(oldkeystate);
Application->OnIdle = &IdleHandler;
}

void __fastcall TForm1::IdleHandler(TObject *Sender,bool &Done) {
Done = false;
GetKeyboardState(keystate);
for(int i=0; i<256; i++) if (oldkeystate!=keystate)
{ Label1->Caption = IntToStr(i); break; }
for(int i=0; i<256; i++) oldkeystate = keystate;
}


Нихера ты кодик замутил...
За оптимитизацию тебе двойка.

13K
02 ноября 2005 года
fcxSanya
11 / / 31.10.2005
Цитата:
Originally posted by 3D Bob
За оптимитизацию тебе двойка.


Ну извини как умею так и пишу, вообще по-моему довольно коротко и работает как надо. Если кто знает как лучше написать - пишите, посмотрим, а придираться всегда легче всего.

362
03 ноября 2005 года
_kolyan
339 / / 03.12.2002
Цитата:
Originally posted by fcxSanya
Для "отлова" клавиш можешь попробовать что-то типа этого:
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
GetKeyboardState(oldkeystate);
Application->OnIdle = &IdleHandler;
}



Чего-то недопонял, а события WM_KEYDOWN уже не катят?

Цитата:
Originally posted by Evgen2877
что-то типа ReadKey в старом добром Pascal-е



А технологии "старого-доброго" в новых злых виндах уже не всегда канают, и чаще всего, то что ты привык делать вот эдак, делается принципиально по-другому. В частности, цикл до нажатия определенной клавиши, выполнять лучше в отдельном потоке - если я правильно понял, что ты хочешь цикл тормозить. Если не тормозить, то вообще непонятно в чем заморочка?

299
03 ноября 2005 года
3D Bob
885 / / 18.04.2005
Цитата:
Originally posted by _kolyan
Чего-то недопонял, а события WM_KEYDOWN уже не катят?


Во во... я про тоже.

13K
04 ноября 2005 года
fcxSanya
11 / / 31.10.2005
Цитата:
Originally posted by _kolyan
а события WM_KEYDOWN уже не катят?



Я чё-то так и не понял как ими пользоваться, точнее где и как это сообщение перехватывать.

362
06 ноября 2005 года
_kolyan
339 / / 03.12.2002
Цитата:
Originally posted by fcxSanya
Я чё-то так и не понял как ими пользоваться, точнее где и как это сообщение перехватывать.



В простейшем случае ставишь обработчик на событие OnKeyDown формы.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог