2014-03-26 113 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的情況。爲什麼按空間時仍然看不到輸出?

回答

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的情況下,但在它旁邊。