[ADA] Erreur d'execution | liste chainée => soucis de pointeur ?

Erreur d'execution | liste chainée => soucis de pointeur ? [ADA] - Ada - Programmation

Marsh Posté le 02-06-2004 à 18:55:58    

/!\ je sais que les demandes de corrections d'exo sont prohibées ici, vous verrez que j'ai deja bien taffé ce projet, mais la je me heurte a des erreurs que je ne parviens pas a resoudre, de l'aide m'est donc necessaire, merci :) /!\
 
 
Alors, tout d'abord, je vous recommande de recuperer ma source, un copier coller de 400 lignes ca serait pas terrible :-/
 
http://hellien.free.fr/projet_ada/puant.adb :)
 
Si vous avez compilez et executé quelques fois le programme, vous remarquerez que de maniere aléatoire (mais on va dire a 65% des executions) il plante sur une erreur :

Code :
  1. "raised CONSTRAINT_ERROR : puant.adb:358 invalid data"


L'arrivée de cette erreur est donc aléatoire, je ne la comprends absolument pas :-/
Le probleme vient du couple de procedure Recherche_paire / Fonction Compare_carte
Peut etre qu'un des pointeurs de parcours que j'utilise est a null (mais dans quel cas?) et il tente de faire un test (et encore, ca me parait bizzare par rapport au fait qu'il plante a la ligne 358, un case carte1.couleur alors qu'il passe le teste precedant carte1.figure qui pourtant ne devrait pas existait si le pointeur de la carte passé en parametre était a null (dsl si ca parait embrouillé mais en executant vous comprendrez ;) ).
j'ai relu 30 fois les procedures réécris 2 fois la procedure recherche paire mais je bloque, aucune idée de ce qu'il se passe :(
 
de l'aide ? :]
merci ;)
 
 
PS : le projet était pour hier ^^"

Reply

Marsh Posté le 02-06-2004 à 18:55:58   

Reply

Marsh Posté le 02-06-2004 à 19:01:16    

nan, comme dirait coluche, c'est la couleur qui est pas dans le manuel.
 
Regarde d'où vient cette carte et s'il n'y a pas un problème lors de l'affectation de sa couleur.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 02-06-2004 à 19:09:54    

bah en fait, ca ne plante pas sur des affectation de couleur, dans la procedure compare_carte, je regarde si les 2 cartes passée en parametre forme une paire de carte, donc il n'ya que des test  
 
if carte1.figure=carte2.figure then --ce test ne pose pas pb
        case carte1.couleur is --c'est la dessus que ca plante, mais je comprends pas pourquoi puisque si le test precedant est bon, ca veut dire que ma carte est valide, de plus, j'ai des procedures qui m'affiche toute mes cartes du jeu, et aucune carte ne pose probleme =/
 
je ne comprends toujours pas :[

Reply

Marsh Posté le 02-06-2004 à 19:12:48    

oui, ça plante au moment où il lit la couleur.
 
Il a trouvé une couleur qui n'est pas dans ton énumération et il a pêté un plomb, d'ou ma remarque te demandant de faire gaffe à d'où vient ta couleur.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 02-06-2004 à 19:13:59    

ha oki :-/
 
je vois pas vraiment dans quelle situation la couleur foire, c'est bizzare, vais relire encore ma source  :ange:  
(je pense que bientot j'vais pouvoir la réciter par coeur  :lol: )

Reply

Marsh Posté le 02-06-2004 à 19:24:41    

j'ai ajouter une ligne pour afficher la carte1 dans la procedure compare_carte apres le test "if carte1.figure = carte2.figure then"
 
ce coup ci ca plante a la ligne 71 ..... procedure affiche_carte => sur la ligne  "case carte.couleur"
 
le probleme est donc ce que tu as dit, sa resolution n'est pas encore a ma portée puisque je ne comprends pas encore d'ou vient le probleme, c'ets bizzare :(

Reply

Marsh Posté le 02-06-2004 à 19:28:27    

c0wb0y a écrit :

j'ai ajouter une ligne pour afficher la carte1 dans la procedure compare_carte apres le test "if carte1.figure = carte2.figure then"
 
ce coup ci ca plante a la ligne 71 ..... procedure affiche_carte => sur la ligne  "case carte.couleur"
 
le probleme est donc ce que tu as dit, sa resolution n'est pas encore a ma portée puisque je ne comprends pas encore d'ou vient le probleme, c'ets bizzare :(

en fait, c'est probablement ton pointeur qui est à la rue, mais j'ai pas trop le temps de regarder.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 02-06-2004 à 19:34:19    

ce que je ne comprends pas c'ets  :  
 
Si mon pointeur envoie une mauvaise donnée a ma procedure, alors dans Compare_carte, le test "if carte1.figure ...." devrait echouer, donc ==> end if et on sort, pas de plantage.
 
Or ce test fonctionne, donc ca veut dire que mon pointeur m'a bien envoyé au moins la donnée carte1.all.carte.figure, et je ne vois pas pourquoi la donnée carte.couleur aurait été perdu pendant le passage de parametre (ou meme ailleur en fait :x )
Honnêtement ce probleme me depasse, ma mauvaise fois me pousserait a dire que c'est un probleme venant du langage  :ange:  :D

Reply

Marsh Posté le 02-06-2004 à 21:24:48    

:bounce:  
 
personne n'aurait une idée de solution ? Je seche la :-/

Reply

Sujets relatifs:

Leave a Replay

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