ユーザーが Ada プログラムで「エスケープ」キーを押したときに、何らかの機能を実行する必要があります。get_line のおかげで彼が入力したものを取得できることはわかっていますが、それはまさに私がする必要があることではありません。確かに、彼が「エスケープ」に入るまでプログラムを停止したくありません。
まず、それは可能ですか?
ユーザーが Ada プログラムで「エスケープ」キーを押したときに、何らかの機能を実行する必要があります。get_line のおかげで彼が入力したものを取得できることはわかっていますが、それはまさに私がする必要があることではありません。確かに、彼が「エスケープ」に入るまでプログラムを停止したくありません。
まず、それは可能ですか?
次のコマンドを使用して、Enter キーを押さなくても文字を取得できます。
Ada.Text_IO.Get_Immediate (Answer)
とAnswer
、Character
_
また、エスケープキーは 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;