Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.06.2010, 22:59   #1
Lemo
Форумчанин
 
Аватар для Lemo
 
Регистрация: 13.10.2008
Сообщений: 714
Радость Case of

Хочю отлавливать нажатия клавишь ...

Вот этот блок :
Код:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if getasynckeystate($30)<>0 then
Label1.Caption:='0';

if getasynckeystate($31)<>0 then
Label1.Caption:='1';
end;
хочю сделать через case of

Код:
 case getasynckeystate($n) of
 30 : label1.Caption:='0';
 31 : label1.Caption:='1';
 end;
Но что то не получаеться (
ЗЫ функа getasynckeystate : параметр типа integer, а резалт - short.
Lemo вне форума Ответить с цитированием
Старый 05.06.2010, 23:19   #2
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Дык
Код:
var
   x : Integer = 10;
begin
   case x of
       1: ShowMessage('1');
       10: ShowMessage('10');
       100: ShowMessage('100');
   end;
end;
эквивалентен
Код:
var
   x : Integer = 10;
begin
   if x = 1 then
      ShowMessage('1');
   else if x = 10 then
      ShowMessage('10');
   else if x = 100 then 
      ShowMessage('100');
end;
А у вас как-то по-другому ... Фактически с 30 и 31 сравнивается то, что вернёт ф-ция getasynckeystate. Я так понимаю, Вы решили, что эти значения поочередно подставляются вместо n?
netrino вне форума Ответить с цитированием
Старый 05.06.2010, 23:27   #3
Lemo
Форумчанин
 
Аватар для Lemo
 
Регистрация: 13.10.2008
Сообщений: 714
Радость

Как я понял под case нельзя сделать?
Lemo вне форума Ответить с цитированием
Старый 05.06.2010, 23:52   #4
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Видимо нельзя Во всяком случае без каких-либо ухищрений
netrino вне форума Ответить с цитированием
Старый 06.06.2010, 01:12   #5
Volt
Форумчанин
 
Аватар для Volt
 
Регистрация: 07.12.2008
Сообщений: 244
По умолчанию

Код:
for i:=0 to 255 do
if getasynckeystate(i)<>0 then
case i of
$31 : label1.Caption:='1';
$30 : label1.Caption:='0';
end;
|̲̅̅●̲̅̅|̲̅̅=̲̅̅|̲̅̅●̲̅̅]

Последний раз редактировалось Volt; 06.06.2010 в 02:05.
Volt вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
CASE drikusik# Помощь студентам 4 16.12.2009 15:22
for and case искандрик Помощь студентам 5 16.12.2009 14:50
Case Is nes@ Помощь студентам 0 18.11.2009 20:21
case Кирилл17 Помощь студентам 6 28.12.2008 10:11