当用户在我的 Ada 程序中按下“escape”键时,我需要执行一些功能。我知道我们可以通过 get_line 检索他输入的内容,但这并不是我需要做的。确实,我不想在他进入“逃脱”之前停止程序。
首先,可能吗?
当用户在我的 Ada 程序中按下“escape”键时,我需要执行一些功能。我知道我们可以通过 get_line 检索他输入的内容,但这并不是我需要做的。确实,我不想在他进入“逃脱”之前停止程序。
首先,可能吗?
无需按 Enter 即可使用以下命令获取字符:
Ada.Text_IO.Get_Immediate (Answer)
与Answer
,一个Character
。
并且转义键是 ASCII 27,所以你可以检查是否Character'Pos(Answer)
等于 27。此外,正如评论中所建议的,您还可以Answer
比较Ada.Characters.Latin_1.ESC
.
下面是一个显示“Yeah!!!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;