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 :

Probléme de levé d'exception avec les Entiers dans un case


Sujet :

Ada

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Probléme de levé d'exception avec les Entiers dans un case
    Bonjour à tous.
    Voilà lorsque je provoque un débordement arithmétique dans un case, je n'arrive
    pas à récupérer l'exception, pourtant si je fais un "out of range" dans un tableau une exception est bien levé.Voici mon programme ci dessous.
    Quelqu'un pourrai m'expliquer ?

    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
    46
    47
    48
    49
    50
    51
     
     
    with Ada.Text_Io,Ada.Integer_Text_io;
    use Ada.Text_Io,Ada.Integer_Text_Io;
     
     
     
     
    procedure Hi is
       H:Character;
       I:Integer;
       Tab:array(1..8) of Integer;
    begin
       H:='a';
     
       -- si on décommente ça léve bien une exception
       --I:=Integer'Last;
       --I:=I+1;
     
       case H is
          when 'a' =>
             begin
                I:=Integer'Last;
                I:=I+1;
                Put(I);
                --Tab(9):=4; Si on enléve le com ça léve bien une exception
             exception
                when others =>
                   Put("Devrait Afficher Ceci, ");
                   raise;
             end;
     
     
          when others =>
             begin
                Put("Others");
             end;
     
     
       end case;
     
     
     
    exception
       when others =>
          Put("puis ceci ?");
          raise;
     
     
     
    end;

  2. #2
    Invité
    Invité(e)
    Par défaut
    Je ne sais pas, j'ai remarqué qu'on avait changé de signe tout de même.
    Je suis sur Ada 200x sur Windows, tu devrai essayer de compiler comme il faut pour être au norme 83 pour voir. je vais tester sur Linux.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Pour info je suis sous ubuntu et j'utilise gnatmake.
    En éxécutant gnatmake avec ces options:
    gnatmake -gnat83 hi.adb
    ça ne change rien.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Non, pour moi non plus ça ne change rien.

    Il doit y avoir une explication, mais je ne la connais pas.:/

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 10
    Points : 11
    Points
    11
    Par défaut
    Ceci ressemble à
    "I understand Ada is supposed to have range checking for scalar types but I wrote a test program that I expected would generate an exception and did not get one. What happened? "

    de la page

    http://gcc.gnu.org/wiki/GNAT

    Réponse : Ajouter -gnato

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    merci pour cette réponse , celà fonctionne effectivement mais il faut supprimer le .ali
    avant de recompiler sinon ça ne change rien.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 10
    Points : 11
    Points
    11
    Par défaut
    Si tu change les options de compilation, ajoute toujours l'option -s à gnatmake:

    -s
    Recompile if compiler switches have changed since last compilation

    http://gcc.gnu.org/onlinedocs/gnat_u...s-for-gnatmake

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

Discussions similaires

  1. [INSERTION DE DONNEES] Problème avec les entiers long
    Par stiml dans le forum Modélisation
    Réponses: 4
    Dernier message: 16/03/2009, 23h00
  2. [vb.net]Gestion des exceptions avec les web services
    Par mvr dans le forum Windows Forms
    Réponses: 2
    Dernier message: 05/12/2005, 22h41
  3. fstream >> probleme avec les entiers
    Par Acropole dans le forum SL & STL
    Réponses: 6
    Dernier message: 01/12/2005, 10h36
  4. Problème d'envoie de text avec les sockets
    Par Coussati dans le forum Web & réseau
    Réponses: 6
    Dernier message: 16/09/2005, 10h26
  5. [MFC] problème avec les insertions dans CComboBox
    Par Joeleclems dans le forum MFC
    Réponses: 12
    Dernier message: 11/06/2004, 15h31

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