Forum

Catégorie : Programmes
Forum : Aide à la programmation
Vues : 778
Réponses : 8
Type : discussion
Etat : réponses autorisées

Label bug

Fryke le 03/02/2013 à 15:52
bonjour à tous(tes) aujourd'hui j'ai essayé de programmer un petit jeu mais dans mes tests du jeu j'ai un problème très gênant c'est que dans la zone où je fait
Code
lbl 1
...
goto 1

et bien il y a un bug très gênant qui est que la calculette m'affiche un err: label alors que le label est bien défini j'aimerais savoir si c'est un bug ou si je suis un boulet
linkakro le 03/02/2013 à 16:18
Il y a un bug. Tu devrais poster tout ton code pour qu'on puisse en situer l'origine.
Lbl et Goto se saisissent avec prgm+9 et prgm+0.
Ne place rien sur la même ligne que ces commandes, c'est plus sûr.
Vérifie qu'il n'y a pas d'autre goto/lbl qui plante.

Tu peux remplacer facilement une paire de goto/lbl par une boucle While ou Repeat. C'est plus rigoureux et cela ne buggue pas tant qu'on écrit correctement les tests, contrairement au goto qui peut poser des problèmes. https://tout82.pages-perso.fre[...].php?sujet=2757
maxence le 03/02/2013 à 16:50
Un label n'est détecté uniquement que si c'est la première commande de la ligne, par exemple:

Code
:Disp "BONJOUR":Lbl A


Le Label A ne sera pas détecté car il n'est pas en premier sur la ligne, mais séparé par le symmbol ":", il faut un retour à la ligne.
linkakro le 03/02/2013 à 17:10
Exact, et c'est encore la meilleure explication. (d'ailleurs tu es plus précis que mon affirmation sur le contenu des lignes)
(on a la même chose avec DelVar suivi de End)
Fryke le 03/02/2013 à 18:51
le lbl est bien premier et il est seul idem pour le goto
en général le code qui donne ce bug est
Code
lbl 1
getkey->A
If A=24:B-1->B
If A=26:B+1->B
output(8,B,"--
Goto 1
linkakro le 03/02/2013 à 18:56
Ce code génère une erreur domaine car il ne faut pas mélanger A et X (l'un pour les touches, l'autre pour l'abscisse) et initialiser X.
Je l'ai testé sans constater d'erreur étiquette.
EDIT : puisque le code ci-dessus a été édité, ne tenez plus compte de ma remarque sur les variables. Il faut seulement initialiser B.

J'ai connu un programme qui causait des bugs innexpliqués sur ce forum. Je ne sais plus où, j'ai seulement conservé le code.

Je me demande si le Lbl a été saisi avec le menu prgm et si des lignes de programme précédentes contiennent un Lbl mal saisi. En effet il suffit de saisir un Lbl à mauvaise étiquette pour planter même si aucun goto ne pointe vers lui.
(un nombre de caractères inadéquat, des tokens autres qu'alphanumérique)
Fryke le 03/02/2013 à 19:05
l'erreur domaine est causé par le fait que de base B=0 donc qu'il n'est pas dans l'écran en rajoutant un 1->B avant le Lbl 1 ça passera
linkakro le 03/02/2013 à 19:11
Non cela ne marchera pas car getKey remet à zéro. Il faut utiliser plusieurs variables. J'ai choisi X pour l'abscisse.
EDIT: message périmé après édition du code précédent.
Fryke le 03/02/2013 à 19:15
je me suis trompé en rédigeant le code mais j'ai édité et là c'est mieux