uses crt; var ch:char; bo:boolean; t:integer; begin t:=0; repeat inc(t); bo:=keypressed; if t=30000 then halt; until bo; repeat ch:=readkey(); ch:=readkey(); writeln(ord(ch)); until ord(ch)=72; end. 感觉这么长==
function getkey(T:longint): integer ; var ch:char; begin if T=0 then // T=0,必须等待输入 begin ch:=readkey(); //读入一个键 if ord(ch)=0 then exit(256+ord(readkey())) else exit(ord(ch)); //如果=0,那么返回256+再读一个键,以区分普通键和控制键,如果不区分,有可能和有些字符ASCII码相同 。 end else // 超时等待输入 begin while (t>0) and (not ketpressed) do // 当时间未完,并且没按键按下时,时间减一, t:=t-1; delay(1) //延时1MS; if keypressed then //循环结束后,判断有没有键按下,如果有,读进来。 begin ch:=readkey(); if ord(ch)=0 then exit(256+ord(readkey())) else exit(ord(ch)); end else exit(0); //没有按键返回0 end; end; 主程序调用时,如果要必须输入,那么就是getkey(0); 如果是超时等待,那么就getkey(时间T);