IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Ada Discussion :

Gestion ligne de commande


Sujet :

Ada

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2012
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Gestion ligne de commande
    Bonjour,

    J'écris acuellement un petit programme intéractif en ada sous Linux.
    Dans ce programme j'éxécute plusieurs commandes à la suite dans mon shell.
    J'aimerais alors savoir s'il est possible en ada de gérér l'historique, l'édition ou la complétion de ligne de commande.

    Par exemple lorsque je presse la flèche du haut, au lieu d'afficher ^[[A, il me propose la dernière commande entrée.

    Merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour, j'ai écrit un bout de code qui saisie chaque caractère d'une séquence d'échappement en plus des caractère simple.
    L'inconvéniant, c'est pour la touche esc justement.
    Ce programme va attendre la suite de la séquence d'échappement, ce qui oblique à saisir un esc supplémentaire.

    Voic le bout de code.
    Code ada : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
     
     begin
          loop
             declare
                Char : Character;
             begin
     
                Text_Io.Get_Immediate(Char);
                case Char is
                   when Character'Val(27) =>
                      Text_Io.Get_Immediate(Char);
                      case Char is
                         when Character'Val(27) =>               
                            Quatuor_Console.Receive(Char);
                         when Character'Val(91) =>
                            Text_Io.Get_Immediate(Char);                 
                            case Char is
                               when Character'Val(49) =>
                                  Text_Io.Get_Immediate(Char);                   
                                  case Char is
                                     when Character'Val(55) =>
                                        null;Text_Io.Put_Line(" -- F6");                             
                                     when Character'Val(56) =>
                                        null;Text_Io.Put_Line(" -- F7");
                                     when Character'Val(57) =>
                                        null;Text_Io.Put_Line(" -- F8");
                                     when Character'Val(126) =>                        
                                        null;Text_Io.Put_Line(" -- begin");
                                     when others =>
                                        null;
                                  end case;                 
                               when Character'Val(50) =>                       
                                  Text_Io.Get_Immediate(Char);                   
                                  case Char is
                                     when Character'Val(48) =>
                                        null;Text_Io.Put_Line(" -- F9");
                                     when Character'Val(49) =>
                                        null;Text_Io.Put_Line(" -- F10");
                                     when Character'Val(51) =>
                                        null;Text_Io.Put_Line(" -- F11");
                                     when Character'Val(52) =>
                                        null;Text_Io.Put_Line(" -- F12");
                                     when Character'Val(53) =>                               
                                        null;Text_Io.Put_Line(" -- Maj+F1");
                                     when Character'Val(54) =>                               
                                        null;Text_Io.Put_Line(" -- Maj+F2");
                                     when Character'Val(56) =>                               
                                        null;Text_Io.Put_Line(" -- Maj+F3");
                                     when Character'Val(57) =>
                                        null;Text_Io.Put_Line(" -- Maj+F4");
                                     when Character'Val(126) =>
                                        null;Text_Io.Put_Line(" -- insert");
                                     when others =>
                                        null;
                                  end case;                                                                    
                               when Character'Val(51) =>                       
                                  null;Text_Io.Put_Line(" -- del");                    
                                  Text_Io.Get_Immediate(Char);      
                               when Character'Val(52) =>                       
                                  null;Text_Io.Put_Line(" -- end");                    
                                  Text_Io.Get_Immediate(Char);      
                               when Character'Val(53) =>
                                  Text_Io.Put_Line(" -- page up");
                                  Text_Io.Get_Immediate(Char);      
                               when Character'Val(54) =>
                                  Text_Io.Put_Line(" -- page down");
                                  Text_Io.Get_Immediate(Char);      
                               when Character'Val(91) =>
                                  Text_Io.Get_Immediate(Char);                   
                                  case Char is
                                     when Character'Val(65) =>
                                        null;Text_Io.Put_Line(" -- F1");                                
                                        Quatuor_Console.Play(True);
                                     when Character'Val(66) =>
                                        null;Text_Io.Put_Line(" -- F2");
                                        Quatuor_Console.Rec(True);
                                     when Character'Val(67) =>
                                        null;Text_Io.Put_Line(" -- F3");                                
                                        Quatuor_Console.play(False);
                                     when Character'Val(68) =>
                                        null;Text_Io.Put_Line(" -- F4");
                                        Quatuor_Console.Rec(False);
                                     when Character'Val(69) =>
                                        null;Text_Io.Put_Line(" -- F5");
                                        Quatuor_Console.Reset;
                                     when others =>
                                        null;
                                  end case;
                               when Character'Val(65) =>
                                  null;Text_Io.Put_Line(" -- up");
                               when Character'Val(66) =>
                                  null;Text_Io.Put_Line(" -- down");
                               when Character'Val(67) =>
                                  null;Text_Io.Put_Line(" -- right");
                               when Character'Val(68) =>
                                  null;Text_Io.Put_Line(" -- left");
                               when others =>
                                  null;
                            end case;
                         when others =>
                            null;
                      end case;
                   when others =>
                      Quatuor_Console.Receive(Char);
                end case;
             exception
                when Text_Io.End_Error =>
                      null;
             end;
          end loop;
       end;

    Up down right et left corresponde aux flèche.

    Après il te suffis de stocker les ligne saisie dans une liste ou un tableau et de rappeler la ligne correspondant au nombre de fois que l'on à appuyé sur la flèche.

    Il y a d'autre outils pour saisir les séquence d'échappement.
    Ce code à la mérite d'être court et simple, même si peu élégant.

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2012
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    cool, merci!

Discussions similaires

  1. [WS 2003] Gestion des utilisateurs en ligne de commande
    Par becket dans le forum Windows Serveur
    Réponses: 2
    Dernier message: 11/05/2011, 14h58
  2. Gestion des options de la ligne de commande
    Par gl dans le forum Télécharger
    Réponses: 0
    Dernier message: 30/11/2010, 17h38
  3. Gestion d'arguments en ligne de commande
    Par ouranos21 dans le forum Général Java
    Réponses: 4
    Dernier message: 25/01/2008, 10h23
  4. Réponses: 3
    Dernier message: 05/11/2007, 15h25
  5. Réponses: 6
    Dernier message: 05/10/2005, 14h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo