|
Posté le 10-07-2016 à 17:13 | #
|
Pour ce que je peux en dire, j'ai déjà fait fonctionner des Goto sur un programme de plus de 10000 octets. |
|
|
Posté le 10-07-2016 à 19:00 | #
|
Ah, bon...
En tous les cas, il est préférable de limiter l'utilisation des labels au strict nécessaire et de préférer l'emploi de boucles, etc. Le Lbl peut paraître très utile et on a tendance à trop l'exploiter quand on commence la programmation en basic |
|
|
Posté le 16-06-2020 à 20:29 | #
|
J'écris ici ce que je viens de découvrir (peut-être que qqn le sait déjà, mais en cherchant sur le site je n'ai rien vu de tel).
Tout d'abord, j'utilise un menu (donc aussi des goto et lbl) dans un prog de 6000 octets env. Et lorsque je faisait un saut du début jusqu'à la fin du prog, il y avait une erreur dimension (même erreur que si le goto ne correspond à aucun lbl) sur Graph 75 ... Après des heures et des heures de recherches, je n'ai trouvé aucune incohérence au niveau du prog (pas de "IfEnd" oublié etc). J' ai commencé à décortiquer mon code, et j'ai finalement trouvé la raison de l'erreur ! En fait, toute sorte de boucles, conditions et autres ne doivent pas avoir en condition des des objets null (comme des listes par exemple). Ce code devrait vous éclairer :
ClrList 5↲
Goto 1↲
For 1→X To Dim List 5↲
Next↲
Lbl 1
Si vous essayez ce petit code, vous obtiendrez aussi une erreur (dimension). Tandis que si vous remplacez la première ligne par "{0}→List 5↲", celui-ci fonctionnera à merveille ! Il m'a fallu un temps dingue pour trouver ça, alors j'espère vous avoir fait plaisir grâce à ce partage ! Par contre, je ne comprends pas pourquoi Casio a fait ça.... Allez savoir |
|
|
Posté le 16-06-2020 à 20:49 | #
|
Je ne crois pas que ce soit lié à Goto ; toutes les opérations sur les listes sont des Erreur Dimension si la liste est vide. Une technique classique pour ça d'ailleurs est de nommer les listes, un TDM en parle je crois. Le ClrList+Dim suffit pour reproduire l'erreur. |
|
|
Posté le 16-06-2020 à 21:02 | #
|
Si si je suis absolument sûr que c'est à cause de Goto, j'ai juste oublié une ligne de code dans le message d'avant pour bien le prouver (désolé ^^') :
ClrList 5↲
Goto 1↲
{0}→List 5↲
For 1→X To Dim List 5↲
Next↲
Lbl 1
Ce code ne fonctionne pas en exécutant "Goto 1", mais fonctionne lorsque vous l'enlevez (ou si vous remplacez la première ligne par "{0}→List 5", il faut que la liste ne soit pas nulle avant de lire le Goto). Donc je pense très sincèrement que c'est la faute du Goto |
|
|
Posté le 16-06-2020 à 21:06 | #
|
Wow, intéressant. Je savais que quand tu sautes par-dessus du code il le lit de façon non triviale mais ça c'est nouveau.
Essaie pour voir si tu remplaces Goto 1/Lbl 1 par If 0/IfEnd ? |
|
|
Posté le 16-06-2020 à 21:06 | #
|
Et l'erreur dimension met le curseur sur le "Goto 1" |
|
|
Posté le 16-06-2020 à 21:10 | #
|
Aucune erreur avec le "If 0 / IfEnd" le programme fonctionne. Donc au final, je ne pense pas qu'il y ait de réelle limite de taille de programme pour les Goto (par contre désolé, mais je n'arrive pas à éditer mon message, il n'y a pas le petit bouton... ) |
|
|
Posté le 29-06-2020 à 19:30 | #
|
J'ai finalement testé avec d'autres exemples, pour voir si d'autres choses pourraient provoquer ce genre d'erreur non-voulue : il s'avère que de cette manière-là il n'y a que dans une fonction For que cela pose problème (donc aucun problème si on écrit "Dim List 5" dans une condition, un Do/LpWhile ou encore dans While/While-end).
En tout cas, c'est très étrange d'avoir un problème aussi précis |
|