5

当用户在我的 Ada 程序中按下“escape”键时,我需要执行一些功能。我知道我们可以通过 get_line 检索他输入的内容,但这并不是我需要做的。确实,我不想在他进入“逃脱”之前停止程序。

首先,可能吗?

4

1 回答 1

5

无需按 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;
于 2013-10-23T11:39:47.093 回答