2014-03-26 2 views
-1
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.       

이것은 Lazarus IDE Pascal입니다. 왼쪽/오른쪽/esc 키뿐만 아니라 프로그램이 공간을 인식 할 수 있도록 문서에서 복사 한 예제의 기능을 확장하고 싶습니다.ReadKey의 반환 값 처리

키를 누를 때 코드를 기록하는 프로그램을 발견했습니다. 그것은 공간에 대해 32라고합니다. 위의 switch 문에 # 32 case를 추가했습니다. 공간을 눌러도 출력이 표시되지 않는 이유는 무엇입니까?

답변

0
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 케이스에 넣지 않고 그 옆에 놓습니다.