Si tu souhaite saisir plusieurs caractères, je te propose ce code, qui réserve un caractère, ici nul, qui, en boucle est renvoyé si rien n'est saisi et travaille avec le caractère saisie dans le cas contraire.
Code :
with Text_Io; use Text_Io; procedure Main is task type Process_Type is entry Get_Char(The_Char : out Character); end Process_Type; task type Console_Type is entry Send(Char : out Character); end Console_Type; task body Console_Type is The_Char : Character; begin loop Get_Immediate(The_Char); accept Send(Char : out Character) do Char := The_Char; end Send; end loop; end Console_Type; task body Process_Type is Console : Console_Type; Char : Character; begin loop select Console.Send(Char); accept Get_Char(The_Char : out Character) do The_Char := Char; end Get_Char; or delay 2.0; accept Get_Char(The_Char : out Character) do The_Char := Character'Val(0); end Get_Char; end select; end loop; end Process_Type; My_Process : Process_Type; Char : Character; begin loop My_Process.Get_Char(Char); if char /= Character'Val(0) then Put_Line("travailler avec le char" ); else Put_Line("travailler sans le char" ); end if; end loop; end Main;
|
Message édité par Profil supprimé le 06-12-2011 à 08:01:17