当用户按下我的Ada程序中的"escape"键时,我需要执行一些功能.我知道我们可以通过get_line检索他输入的内容,但这并不是我需要做的.实际上,我不想在他进入"逃跑"之前停止该计划.
首先,有可能吗?
可以使用以下方式获取字符而无需按Enter键:
Ada.Text_IO.Get_Immediate (Answer)
Run Code Online (Sandbox Code Playgroud)
用Answer,a 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;
Run Code Online (Sandbox Code Playgroud)