Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 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 | | Calendrier |
|
|
| pourquoi ces erreurs ? | |
| | Auteur | Message |
---|
RMont
Nombre de messages : 233 Age : 82 Localisation : charente maritime Date d'inscription : 29/12/2008
| Sujet: pourquoi ces erreurs ? Ven 19 Sep 2014 - 10:52 | |
| bonjour a tous. pourquoi j'ai ces erreurs?.
1- nom de sub incorrect ligne 83 2- label non déclaré ligne 94
si j'enlève les rems des lignes 3,4,5,6,7,8,10 et que je passe les subs en rem ,je n'ai pas l'erreur "nom de sub incorrect" et pourquoi label non déclaré ligne 94 alors qu'il y est ?.
et je vais en profiter pour demander si il n'y a pas une autre solutionque de passer par des labels (on_key_up,label pour remplir mes 5 edits sans passer par un button "validation "a chaque fois
error_french
' dim i% ' dim nc% : nc%=5 ' dim a% : a%=100 ' dim ch% ' dim part%(5,1) ' dim pts% ' label f1 ,f2,f3,f4 ,f5 ,fin
variables() labels()
for i%= 1 to nc% edit i% : top i%,200 : left i%,a% : width i%,20 a%=a%+35 next i%
set_focus 1 on_key_up 1,f1
end
f1: pts%=10 if key_up_code=13 if numeric(text$(1))=0 then return ch%=val(text$(1)) part%(ch%,0)=ch% part%(ch%,1)=part%(ch%,1)+pts% set_focus 2 on_key_up 2,f2 end_if
f2: ' pts%=10 if key_up_code=13 if numeric(text$(2))=0 then return ch%=val(text$(2)) part%(ch%,0)=ch% part%(ch%,1)=part%(ch%,1)+pts% set_focus 3 on_key_up 3,f3 end_if
f3: ' pts%=10 if key_up_code=13 if numeric(text$(3))=0 then return ch%=val(text$(3)) part%(ch%,0)=ch% part%(ch%,1)=part%(ch%,1)+pts% set_focus 4 on_key_up 4,f4 end_if
f4: ' pts%=10 if key_up_code=13 if numeric(text$(4))=0 then return ch%=val(text$(4)) part%(ch%,0)=ch% part%(ch%,1)=part%(ch%,1)+pts% set_focus 5 on_key_up 5,f5 end_if
f5: pts%=25 if key_up_code=13 if numeric(text$(5))=0 then return ch%=val(text$(5)) part%(ch%,0)=ch% part%(ch%,1)=part%(ch%,1)+pts% ' set_focus 6 ' on_key_up 6,f6 end_if
print part%(5,1) :' pour verif du 5em edit fin:' pour l'instant ' ============= les variables =============== sub variables() dim i% dim nc% : nc%=5 dim a% : a%=100 dim ch% dim part%(5,1) dim pts% end_sub ' ============= les labels ================ sub labels() label f1,f2,f3,f4,f5 label fin end_sub
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: pourquoi ces erreurs ? Ven 19 Sep 2014 - 11:02 | |
| Tu fais 2 petites erreurs: 1. tu ne peux pas mettre un commentaire après un label. Un label doit être seul sur la ligne. Place le commentaire sur la ligne au-dessus ou en-dessous. 2. après ton label "fin", tu continues l'exécution en tombant sur la commande SUB. Ceci produira un plantage, car c'est une définition et non un code exécutable. Place un END (ou tout autre moyen pour dériver l'exécution) devant la commande SUB. De manière générale, il convient de placer toutes les SUB en fin de programme, et de veiller à ce que l'exécution du code au-dessus ne puisse pas passer séquentiellement sur une définition de SUB. Voici ton code corrigé: - Code:
-
error_french
' dim i% ' dim nc% : nc%=5 ' dim a% : a%=100 ' dim ch% ' dim part%(5,1) ' dim pts%
' label f1 ,f2,f3,f4 ,f5 ,fin
variables() labels()
for i%= 1 to nc% edit i% : top i%,200 : left i%,a% : width i%,20 a%=a%+35 next i%
set_focus 1 on_key_up 1,f1
end
f1: pts%=10 if key_up_code=13 if numeric(text$(1))=0 then return ch%=val(text$(1)) part%(ch%,0)=ch% part%(ch%,1)=part%(ch%,1)+pts% set_focus 2 on_key_up 2,f2 end_if
f2: ' pts%=10 if key_up_code=13 if numeric(text$(2))=0 then return ch%=val(text$(2)) part%(ch%,0)=ch% part%(ch%,1)=part%(ch%,1)+pts% set_focus 3 on_key_up 3,f3 end_if
f3: ' pts%=10 if key_up_code=13 if numeric(text$(3))=0 then return ch%=val(text$(3)) part%(ch%,0)=ch% part%(ch%,1)=part%(ch%,1)+pts% set_focus 4 on_key_up 4,f4 end_if
f4: ' pts%=10 if key_up_code=13 if numeric(text$(4))=0 then return ch%=val(text$(4)) part%(ch%,0)=ch% part%(ch%,1)=part%(ch%,1)+pts% set_focus 5 on_key_up 5,f5 end_if
f5: pts%=25 if key_up_code=13 if numeric(text$(5))=0 then return ch%=val(text$(5)) part%(ch%,0)=ch% part%(ch%,1)=part%(ch%,1)+pts% ' set_focus 6 ' on_key_up 6,f6 end_if
print part%(5,1) :' pour verif du 5em edit ' pour l'instant : ' <========= fin: : ' <========= end : ' <=========
' ============= les variables =============== sub variables() dim i% dim nc% : nc%=5 dim a% : a%=100 dim ch% dim part%(5,1) dim pts% end_sub ' ============= les labels ================ sub labels() label f1,f2,f3,f4,f5 label fin end_sub | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: pourquoi ces erreurs ? Ven 19 Sep 2014 - 11:13 | |
| Les sous-programmes appelés par ON_XXX … doivent être terminé par l’instruction RETURN. Dans ton code, ajoute des RETURN aux lignes 33, 44, 55, 66 Ligne 79, enlève tout ce qui est après fin :. Il ne doit y avoir rien sur la même ligne après les deux-points Ajoute un end avant la déclaration de la SUB
Klaus a été le plus rapide!
EDIT Pour une meilleure lisibilité de ton code sur le Forum, mets ton code entre les balises [code ] ... [/ code]. REMARQUE : il ne doit y avoir aucun espace entre les crochets! | |
| | | Invité Invité
| Sujet: Re: pourquoi ces erreurs ? Ven 19 Sep 2014 - 11:43 | |
| Une autre présentation du code: - Code:
-
error_french variables() labels()
for i%= 1 to nc% edit i% : top i%,200 : left i%,a% : width i%,20 a%=a%+35 on_key_up i%,f1 next i%
set_focus 1 end ======================================== f1: pts%=10 if key_up_code=13 i% = number_key_up if numeric(text$(i%))=0 then return if i% = 5 then pts%=25 : else : pts% = 10 ch%=val(text$(i%)) part%(ch%,0)=ch% part%(ch%,1)=part%(ch%,1)+pts%
if i% = 5 print part%(5,1) :' pour verif du 5em edit else set_focus i%+1 end_if end_if return
' ============= les variables =============== sub variables() dim i% dim nc% : nc%=5 dim a% : a%=100 dim ch% dim part%(5,1) dim pts% end_sub ' ============= les labels ================ sub labels() label f1 label fin end_sub
fin: :' pour l'instan |
| | | RMont
Nombre de messages : 233 Age : 82 Localisation : charente maritime Date d'inscription : 29/12/2008
| Sujet: Re: pourquoi ces erreurs ? Ven 19 Sep 2014 - 18:28 | |
| merci à vous pour vos réponses. au départ, je n'avais que "nom de sub incorrect" ,c'est pourquoi j'ai mis ce label fin en pensant arreter ce code. je constate qu'il est possible de mettre au moins 2 end dans un code et pour finir ,je dirai qu'il y a longtemps que je n'avais pas mis de code sur le forum et,je me suis aperçu trop tard que je ne l'avais pas mis entre les balises "code" je vais pouvoir continuer en essayant les différentes méthodes encore merci Rmont
| |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: pourquoi ces erreurs ? Ven 19 Sep 2014 - 18:42 | |
| Salut RMont. - RMont a écrit:
- je constate qu'il est possible de mettre au moins 2 end dans un code
Tu peux en mettre tant que tu voudras! des milliers mêmes ! Mais bon, restons raisonnables ! Saches que la commande END a pour unique rôle d’arrêter l’exécution du programme principal mais le programme reste actif et continue de traiter les événements. Donc on met un END là où l’on veut que le programme n’aille pas au-delà. EDIT : Pour arrêter définitivement l'exécution du programme et libérer la mémoire, on utilise la commande TERMINATE. Tous les objets sont détruits. Le programme n'existe plus en mémoire.
Dernière édition par papydall le Ven 19 Sep 2014 - 19:07, édité 1 fois | |
| | | RMont
Nombre de messages : 233 Age : 82 Localisation : charente maritime Date d'inscription : 29/12/2008
| Sujet: Re: pourquoi ces erreurs ? Ven 19 Sep 2014 - 18:50 | |
| @ cosmos. ta façon de faire me fais entrevoir des belles possibilités. j'ai fais un code de 1000 lignes environ mais avec beaucoup de répétitions de portions de code identiques mais a chaque fois avec des labels différents. donc je vais réécrire mon code
| |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: pourquoi ces erreurs ? Ven 19 Sep 2014 - 18:58 | |
| N’hésite surtout pas à poster ton code (si ce n’est pas top secret ! ) et à poser toute sorte de question sur laquelle tu butes. Certainement, tu auras des retours et c’est ainsi que le savoir commun s’enrichit. | |
| | | Invité Invité
| Sujet: Re: pourquoi ces erreurs ? Ven 19 Sep 2014 - 19:46 | |
| Ok Rmont, pas de problèmes. - Papydall a écrit:
- Tu peux en mettre tant que tu voudras! des milliers mêmes ! Mais bon, restons raisonnables !
C'est oui et non. Le End pourrait être mis à la place de RETURN, ce là fonctionne un certain temps, mais dans le cas présent, ou une touche appelle un sous-programme, il y a une accumulation de la pile sans la vider. Je crois qu'on a droit à une pile de 1000 appels si je me souviens bien. Alors imagine d'écrire un texte avec on_key_up à chaque touche, tu seras vite bloqué. Le return dépile l'appel qui a été fait. Je me suis souvent servi il y a un temps de END pour stopper un programme. C'était lorsque j'ouvrais une form pour pouvoir répondre à une question, et pour stopper le programme je mettais END, je répondais au message, et je reprenais là où j'en étais resté. Mais avec les commandes qui ont étaient rajoutées, je ne me souviens depuis d'avoir eu besoin d'utiliser ce principe. Je viens de me relire, cela semble à du chinois, mais je me dois de ne pas être parfait, d'un coup je me rappel d'un oubli. |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: pourquoi ces erreurs ? Ven 19 Sep 2014 - 20:56 | |
| Je suis plutôt d'accord avec toi Cosmos, Pour respecter le basic Panoramic, il est préférable de faire suivre tous label par return. C'est juste une bonne habitude à prendre. - Code:
-
Label start,fin gosub start END start: print " comme je n'ai rien à écrire, j'arrête là " wait 5000 gosub fin return
fin: terminate return
| |
| | | Invité Invité
| Sujet: Re: pourquoi ces erreurs ? Ven 19 Sep 2014 - 23:09 | |
| Tout à l'heure, j'ai du retirer le reste du post que je n'ai pu developper par un imprévu.
Il faut dire qu'il y a Panoramic aujourd'hui et celui d'hier. Rappelles-toi Jean-Claude! En 2008 et 2009, on avait de gros problème pour pouvoir entrer des données. On ne savait pas comment faire pour stopper le programme et pouvoir répondre à des questions. Input ne convenait vraiment pas, et on était encore emprunt du basic ancestral. On avait pas vraiment d'expériences et on manquait d'un certain nombres d'instructions. Le END dans un programme m'avait permit de réussir ce tour de force.
Maintenant un sous-programme est un sous-programme et se termine par RETURN. Par contre il faudrait vérifier et je pense que je connais la réponse, pour voir si le dernier sous-programme qui ne nécessite pas de return pour fonctionner, n'est pas considéré comme un END. On n'a pas d'erreur d'exécution dans ce cas-là, mais pour moi RETURN est obligatoire. Je pense que si le programme se prolonge, on peut avoir un débordement de pile.
En tout cas dans l'absolu, et seulement si ce n'est pas pour arrêter un sous-programme , on peut mettre END à plein d'endroit comme dit Papydall. |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: pourquoi ces erreurs ? Sam 20 Sep 2014 - 1:20 | |
| J’aime bien éclaircir quelque chose : je n’ai jamais dit qu’un END remplace un RETURN. J’ai bien écrit : - Citation :
- Les sous-programmes appelés par ON_XXX … doivent être terminé par l’instruction RETURN.
Dans ton code, ajoute des RETURN aux lignes 33, 44, 55, 66 En effet, le RETURN qui indique la fin d’un sous-programme est une instruction qui sert à récupérer l’adresse de retour à l’endroit à partir duquel le sous-programme a été appelé. En absence de RETURN, la pile risque de déborder. Il est à rappeler que la pile est une zone de la mémoire servant, entre autres, à stoker les adresses de retours de sous-programmes. Par contre, un même programme peut contenir, non pas un seul END mais autant que nécessaire. C’était en réponse à RMont qui a constaté que j’ai utilisé 2 end | |
| | | Invité Invité
| Sujet: Re: pourquoi ces erreurs ? Sam 20 Sep 2014 - 5:40 | |
| J'ai jamais pensé que tu voulais dire qu'on pouvait mettre un end à la place d'un return. Mais un moment on aurait pu le penser.
Je voulais juste éclaircir ce point. Mais ma première intervention, je l'ai tronqué en retirant la suite qui n'était pas fini pour un imprévu que j'ai du traiter, et je suis parti.
J'étais intervenu au départ pour mettre un exemple d'utilisation du END, et je me suis abstenu. C'est moi qui suis en cause, et pour cela, tu te sens victime de propos mal compris. Je me dis parfois que dans la journée je ne devrais pas intervenir, car régulièrement lorsque je prend le temps de répondre, je dois couper court pour partir.
|
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: pourquoi ces erreurs ? Sam 20 Sep 2014 - 9:31 | |
| @Papydall, Rassure-toi, je n'ai pas, non plus, lu que tu avais dit que l'on pouvait remplacer return par end. Je suis intervenu uniquement pour être certain que Rmont ne l'ai pas interprété comme tel. - Cosmos a écrit:
- Rappelles-toi Jean-Claude! En 2008 et 2009, on avait de gros problème pour pouvoir entrer des données. On ne savait pas comment faire pour stopper le programme et pouvoir répondre à des questions. Input ne convenait vraiment pas, et on était encore emprunt du basic ancestral. On avait pas vraiment d'expériences et on manquait d'un certain nombres d'instructions.
En 2008, je n'était pas là, mais c'est très vrai que nous avons évolués depuis cette époque. Et Panoramic aussi. Preuve, qu'en s'accrochant un peu-beaucoup, on peut faire bien des choses avec Panoramic. Bonne journée à tous. | |
| | | Invité Invité
| Sujet: Re: pourquoi ces erreurs ? Sam 20 Sep 2014 - 12:16 | |
| - Jean-Claude a écrit:
- En 2008, je n'était pas là,
Cela m'a interpellé. Il me semblait bien que tu étais là avant moi. Je voulais dire 2009/2010. @+ |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: pourquoi ces erreurs ? Sam 20 Sep 2014 - 13:14 | |
| Hé oui, on se croit plus ancien que la réalité, L'ancêtre c'est JL35 (29/11/2007), du moins, de ceux qui participent toujours. Un, des Artisans du début, qui ont, comme nous, essuyés les plâtres. | |
| | | Froggy One
Nombre de messages : 598 Date d'inscription : 06/01/2012
| Sujet: Re Mar 23 Sep 2014 - 8:48 | |
| Génial, ce post des "anciens" ! on y apprend plein de choses ! je parviens à peine au niveau où j'arrive à comprendre ce que les autres ont bien voulu développer grâce à leurs codes alors ce petit moment de LABEL vaut son pesant de cacahuètes ! Bonne journée !!! | |
| | | Contenu sponsorisé
| Sujet: Re: pourquoi ces erreurs ? | |
| |
| | | | pourquoi ces erreurs ? | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |