Bonjour,
Je cherche à utiliser les touches telles que F1..F12
j'ai essayé avec la procedure Get_Immediate (Item : out Character; Available : out Boolean); et la procedure Look_Ahead (Item : out Character; End_Of_Line : out Boolean); mais je n'y parviend pas.
j'utilise Gnat et suis sur Linux.
mon code de test ::=
with Ada.Text_Io;
use Ada.Text_Io;
with Ada.Integer_Text_Io; -- Pour afficher character'pos(Char);
use Ada.Integer_Text_Io;
procedure Main is
Char : Character;
Real_String : String(1..4) := (others => Ascii.Nul);
Last_char : Natural := 1;
Avaible : Boolean;
begin
Text_Io.Skip_Line;
Get_Immediate(Char,avaible);
Put(Integer'Image(Character'Pos(Char)));
if Avaible then
Real_String(Last_char) := Char;
loop
Last_Char := Last_Char + 1;
Get_Immediate(Char,avaible);
Put(Integer'Image(Character'Pos(Char)));
Real_String(Last_Char) := Char;
exit when not Avaible;
end loop;
end if;
end Main;
J'aurais aimé utiliser Get_Immediate (Item : out Character; Available : out Boolean); dans un algo élégant mais bon, je m'en sort avec une serie de case en cascade et Get_Immediate (Item : out Character); pour l'utilisation des touche F1 à F6
when Character'Val(27) =>
Get_Immediate(Char);
case Char is
when Character'Val(91) =>
Get_Immediate(Char);
case Char is
when Character'Val(91) =>
Get_Immediate(Char);
case Char is
when Character'Val(65) =>
Mode := Gestion_De_Production;
when Character'Val(66) =>
Mode := Caisse;
when Character'Val(67) =>
Mode := Previsionnel;
when Character'Val(68) =>
Mode := Echeancier;
when Character'Val(69) =>
Mode := Reel;
when others =>
Put(Ascii.Bel);
end case;
when Character'Val(49) =>
Get_Immediate(Char);
case Char is
when Character'Val(55) =>
Mode := Connection_Reseau;
when others =>
Put(Ascii.Bel);
end case;
when others => -- echeppement de 3 caracteres;
Put(Ascii.Bel);
end case;
when others =>
Put(Ascii.Bel);
end case;