Pb avec Storage_Error

Pb avec Storage_Error - Ada - Programmation

Marsh Posté le 01-01-2007 à 17:20:47    

Bonjour,
 
J'essaie de faire un menu en y faisant des appels récursifs au menu_principal (cf. le code ci-joint)
et j'ai l'erreur suivante : test.adb:12:42: warning: Storage_Error may be raised at run time.
 
Est-ce-que qq'un urait une idée pour résoudre ce pb?
 
Merci et Bonne année,
 
             Axos
 

Code :
  1. with Ada.Integer_Text_Io; use Ada.Integer_Text_Io;
  2. with Ada.Text_Io; use Ada.Text_Io;
  3. procedure test is
  4.  
  5.    procedure menu_principal is
  6.    reponse : integer;
  7.    begin
  8.      
  9.       get(reponse);
  10.       case reponse is
  11.          when 1 =>put("Créer un compte" );menu_principal;
  12.          when 2 =>put("Modifier un compte" );menu_principal;
  13.          when others => return;
  14.       end case;
  15.      
  16.    end menu_principal;
  17.  
  18. begin
  19.    menu_principal;
  20. end test;


Message édité par Axos le 01-01-2007 à 18:21:18
Reply

Marsh Posté le 01-01-2007 à 17:20:47   

Reply

Marsh Posté le 01-01-2007 à 17:31:04    

Salut,
1) Utilises les balises de code, ça sera plus clair pour "test.adb:12:42"
2) Ce n'est pas une erreur, c'est un "warning", donc ton programme est normalement compilé.
3) Quel est le but de tes appels récursifs sur menu_principal ?

Reply

Marsh Posté le 01-01-2007 à 17:49:22    


Message de mon compilateur ::=


gnatgcc -c main.adb
main.adb:12:43: warning: possible infinite recursion
main.adb:12:43: warning: Storage_Error may be raised at run time
main.adb:13:46: warning: possible infinite recursion
main.adb:13:46: warning: Storage_Error may be raised at run time


 
Semantiquement parlant, je n'ai pas de reponse à ta question.
Pratiquement parlant, bien que je comprene ta demarche dans la recherche ... ce programme ne represente pas une solution.
 

Reply

Marsh Posté le 01-01-2007 à 18:14:18    

les balises ...  tu met ['code'] sans les apostrophes  avant le code et [/'code'] sans les apostrophe aussi après le code.
 
Bonjour apprentitux, au passage.
 
Edit, bonjour à tous en fait .. [:dawa_neowen]


Message édité par Profil supprimé le 01-01-2007 à 18:23:44
Reply

Marsh Posté le 01-01-2007 à 18:27:33    

Mon but est de faire un menu et d'y rester après un traitement: par exemple si reponse = 1, je fais appel à une procedure qui crée un compte (à la place du put) et une fois que c'est fini, je fais appel à menu_principal pour rester dans le menu.
 
Le message d'erreur est un warning, c'est pour cela que je l'avais ignoré au départ mais mon programme sur lequel je travaille a pris plus d'ampleur et l'appel au menu_principal se fait bizarrement au bout d'un moment.
 
Merci pour votre aide.
 
                     Axos

Reply

Marsh Posté le 01-01-2007 à 18:37:44    

et pourquoi pas une simple boucle ?  
Tu as testé ? même symptome ?

Reply

Marsh Posté le 01-01-2007 à 20:18:33    

Axos a écrit :

Mon but est de faire un menu et d'y rester après un traitement...


Non, tu n'y reste pas dans ton menu, tu en crées un autre.
C'est mal programmé, tu devrais essayer autre chose....

Reply

Marsh Posté le 01-01-2007 à 23:01:49    

Ca marche avec une classique boucle while :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed