5

ユーザーが Ada プログラムで「エスケープ」キーを押したときに、何らかの機能を実行する必要があります。get_line のおかげで彼が入力したものを取得できることはわかっていますが、それはまさに私がする必要があることではありません。確かに、彼が「エスケープ」に入るまでプログラムを停止したくありません。

まず、それは可能ですか?

4

1 に答える 1

5

次のコマンドを使用して、Enter キーを押さなくても文字を取得できます。

Ada.Text_IO.Get_Immediate (Answer)

AnswerCharacter_

また、エスケープキーは ASCII の 27 であるため、27 にCharacter'Pos(Answer)等しいかどうかを確認できます。また、コメントで示唆されているように、 と比較することもでき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 に答える