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 :

Simple appel de procedure en package avec entrée(s) de l'utilisateur


Sujet :

Ada

  1. #1
    Membre du Club
    Homme Profil pro
    chômeur
    Inscrit en
    Septembre 2015
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : chômeur

    Informations forums :
    Inscription : Septembre 2015
    Messages : 175
    Points : 62
    Points
    62
    Par défaut Simple appel de procedure en package avec entrée(s) de l'utilisateur
    Bonsoir|x|Bonjour,

    Je finalise un programme qui demande un nom puis si le nom est valide à celui attendu, alors demande un mot de passe. Mais si le nom n'est pas celui attendu alors une deuxiéme saisie est demandée (de type float), puis si celle-ci est valide alors un avertissement est affiché et fin du programme.

    J'ai utilisé l'attribut 'Valid mais celui-ci fonctionne mal.
    En effet d'aprés l'ARM (je cite) :

    Invalid data can be created in the following cases (not counting erroneous or unpredictable execution): - input.

    Source de ma citation :http://www.adaic.org/resources/add_c...AA-13-9-2.html

    Donc (pour les non-anglophones ) : Quel outil utiliser au lieu de " 'Valid " (par exemple : un autre attribut ?) qui me permettrai de valider une entrée conforme au type attendu et d'agir en conséquence?


    Bon, tréve de texte , place au code !

    Je fais de mon mieux pour commenter et rendre mon code lisible alors si vous ne comprenez toujours pas , critiquez pour que je fasse quelques modifs.

    Le code se construit avec Gnat GPL , je ne sais pas pour les autres compilateurs .

    Bien entendu ,pour que le code se construit , enregistrer les fichiers dans le même dossier.

    Construisez-le et exécutez-le pour une meilleure compréhension .

    Enfin : Le code est commenté par moi et quelques warnings

    Code : 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
    with Ada.Text_IO;
    with Identification;
    use Identification;
     
       -- Nom du fichier : log_in.adb (fichier principal à compiler)
     
    Procedure log_in is
    begin 
     
    	virgules_et_passe;   
     
    	 declare
     
    	virgules : Identification.virgules_Value;
    	Password : Identification.Password_Value;
    	-- warning: variable "Password" is read but never assigned
    	-- Moi : Euh, pourtant elle est bien utilisée juste en dessous !
     
             begin
     
    	if virgules'Valid then
    -- Ici 'valid fonctionne mal , comme vous avez pu le constater si vous avez lancer le programme en utilisant le nom et le mot de passe requis dans Identification.adb .
            Ada.Text_IO.Put_Line("A float number was not asked");
     
    	elsif  Password = "admin" then
          Ada.Text_IO.Put_Line (Item => "Welcome, Administrator.");
    -- Lors de l'éxécution , cette condition est ignorée !! Pourquoi ?!
    	end if;
     
            end;
     
    end log_in;

    Code : 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
    with Ada.Text_IO; use Ada.Text_IO;
    with Ada.Float_Text_IO;
     
      --  Nom du fichier : identification.adb
     
    package body Identification is
     
    procedure Passe (Password : out Password_Value) is	
    begin
    	Ada.Text_IO.Get (Password);
                Ada.Text_IO.Skip_Line;
                Ada.Text_IO.New_Line;
     
    	end Passe;
     
    procedure Get_virgules (virgules  : out virgules_Value) is
    begin
        Ada.Float_Text_IO.Get (virgules);
        Ada.Text_IO.Skip_Line;
       end Get_virgules;
     
    procedure virgules_et_passe is
       virgules : Identification.virgules_Value;
       Password : Identification.Password_Value;
    begin
     
    Ada.Text_IO.Put (Item => "Hello, User. What's your name? ");
     
         declare
     
             Name : String := Ada.Text_IO.Get_Line;
     
             begin
     
    	if Name = "codezero1" then Passe (Password => Password);
     
    	else Ada.Text_IO.Put_Line ("You're not Administrator.");
    	Get_virgules (virgules => virgules);
    	end if;
     
         end;
     
    end virgules_et_passe;
     
    end identification;


    Code : 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
    with Ada.Text_IO;
    with Ada.float_text_IO;
     
      -- Nom du fichier : identification.ads
     
    package identification is
     
       subtype virgules_Value is float;
     
       procedure Get_virgules (virgules : out virgules_Value);
     
       ----------------------------------------------------------------------------------------------
     
       subtype Password_Value is String(1..5);
     
       procedure Passe (Password : out Password_Value);
     
     
       procedure virgules_et_passe;
     
    end identification;

  2. #2
    Membre du Club
    Homme Profil pro
    chômeur
    Inscrit en
    Septembre 2015
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : chômeur

    Informations forums :
    Inscription : Septembre 2015
    Messages : 175
    Points : 62
    Points
    62
    Par défaut Function ?
    Peut-être que créer une fonction pour Password et une autre pour virgules serait la solution ??

  3. #3
    Membre du Club
    Homme Profil pro
    chômeur
    Inscrit en
    Septembre 2015
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : chômeur

    Informations forums :
    Inscription : Septembre 2015
    Messages : 175
    Points : 62
    Points
    62
    Par défaut
    Résolu , avec une variable global et l'usage de procedures externes .....sans Packages et d'autres avec !!!

    Si quelqun est intérêssé par le code , qu'il post un com

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 05/06/2007, 17h14
  2. Appel procedure stockée oracle avec php
    Par CYCLOPE91440 dans le forum Oracle
    Réponses: 17
    Dernier message: 09/02/2007, 10h08
  3. [C#] Comment appeler une procédure stockée avec multiple SELECT ?
    Par Piolet dans le forum Accès aux données
    Réponses: 2
    Dernier message: 08/06/2006, 16h04
  4. Appel d'un package avec DBLink variable ?
    Par zorglob dans le forum Oracle
    Réponses: 2
    Dernier message: 17/02/2006, 17h11
  5. Réponses: 4
    Dernier message: 28/12/2003, 15h50

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