Обработка возвращаемых значений ReadKey
Program Example3;
uses Crt;
{ Program to demonstrate the ReadKey function. }
var
ch : char;
begin
writeln('Press Left/Right, Esc=Quit');
repeat
ch:=ReadKey;
case ch of
#0 : begin
ch:=ReadKey; {Read ScanCode}
case ch of
#32: Writeln ('Space');
#75 : WriteLn('Left');
#77 : WriteLn('Right');
end;
end;
#27 : WriteLn('ESC');
end;
until ch=#27 {Esc}
end.
Это Лазарь IDE Паскаль. Я хочу расширить функциональность примера, скопированного из документации, чтобы программа распознавала пространство, а не только левые / правые / клавиши Esc.
Я нашел программу, которая записывает коды при нажатии клавиш. Это говорит 32 за место. Я добавил случай № 32 в инструкции switch выше. Почему я все еще не вижу вывода при нажатии пробела?
1 ответ
case ch of
#0 : begin
ch:=ReadKey; {Read ScanCode}
case ch of
#75 : WriteLn('Left');
#77 : WriteLn('Right');
end;
end;
#27 : WriteLn('ESC');
#32 : WriteLn('Space'); {<- space case should go HERE}
end;
Пробел не является расширенным ключом, поэтому ему не предшествует #0. Мы не помещаем дело № 32 в дело № 0, а рядом с ним.