当用户按下我的Ada程序中的“escape”键时,我需要执行一些功能。我知道我们可以通过get_line检索他输入的内容,但这并不是我需要做的。 实际上,我不想在他进入“逃跑”之前停止该计划。
首先,有可能吗?
答案 0 :(得分:5)
可以使用以下方式获取字符而不需要输入:
Ada.Text_IO.Get_Immediate (Answer)
Answer
,Character
。
并且转义键是ASCII 27,因此您可以检查Character'Pos(Answer)
是否等于27。另外,根据评论中的建议,您还可以将Answer
与Ada.Characters.Latin_1.ESC
进行比较。
这是一个显示"是啊!!! 1 !! 1!"在循环中直到按下ESC键。
with Ada.Characters.Latin_1;
with Ada.Text_IO;
procedure Test is
Finished : Boolean := False;
task Escape_Task;
task body Escape_Task is
Answer : Character;
begin
loop
Ada.Text_IO.Get_Immediate(Answer);
if Answer = Ada.Characters.Latin_1.ESC then
Finished := True;
exit;
end if;
end loop;
end Escape_Task;
begin
while not finished loop
Ada.Text_IO.Put_Line("Yeahh!!!1!!1!");
end loop;
end Test;