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 |
|
|
| problème de structure ? | |
| | Auteur | Message |
---|
Invité Invité
| Sujet: problème de structure ? Ven 21 Aoû 2015 - 1:27 | |
| Je viens d'avoir une sacrée surprise, à laquelle je ne m'attendais pas. J'ai un programme qui fait actuellement plus de 5000 lignes, même si il y a des copies différentes pour mettre au point. Je suis sur des réglages, donc le programme est opérationnel avec ses défaut, et d'un coup je me trouve avec l'erreur suivante: nom déjà défini en ligne 8 (message en anglais) qui ne peut ête relu, alors que je suis dans les lignes 4700..., et qu'il n'y a aucune étiquettes, et ne peux revenir au début.. Aucun goto, ni gosub, ni aucun évènement. Ne sachant pas pourquoi, et depuis où je pouvais venir sur ces lignes, j'ai fait une trace: Le code à cette endoit là: et le début du programme: - Code:
-
trace_on "controle.txt" dir_change "C:\PANO\Pano_sans_événement" full_space 0:left 0,-20 : width 0,screen_x - 800 : height 0,480 if width(0) < 600 then width 0,600 width 0,500
dim msg% , liste$(200,2),obj% ,maxi% , pos(10) , pause% , tempo , temp , flag_clic , PAGE , choix_menu% dim menu$(21) , mnu%(21) , table_menu$(50) , sous_table_menu$(50) , item$(20) , timer_sortie% , cumulKey$ , return% ,rt$, d_timer% rt$ = "}"+chr$(7) Pour moi, bonjour les dégats. |
| | | Invité Invité
| Sujet: Re: problème de structure ? Ven 21 Aoû 2015 - 2:16 | |
| Je pense qu'il y a un problème de décalage avec les boucles IF ELSE END_if. Le programme ne sait plus où se brancher. Je regarderais plus en détail ce week-end, si je peux. J'avais redémarré l'ordinateur pour voir si c'était un problème du Basic, du coup j'ai perdu les repères avec les signets, et les retours en arrière pour modifier. |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: problème de structure ? Ven 21 Aoû 2015 - 7:27 | |
| Bonjour Cosmos70
Effectivement ça se situe plutôt après le ELSE. As tu bien un END_IF a la fin de la boucle IF ELSE END_IF
C'est vrai que sur les gros programmes, ce type d'erreur est parfois difficile a localiser. J'en ai fais l’expérience avec GPP et mes seulement 3000 lignes. | |
| | | Jack Admin
Nombre de messages : 2394 Date d'inscription : 28/05/2007
| Sujet: Re: problème de structure ? Ven 21 Aoû 2015 - 7:44 | |
| L'erreur "Name Already Defined" apparait lors du traitement des lignes DIM et DIM_LOCAL quand une variable est déclarée deux fois. D'après le "trace" que tu indiques, on dirait que ton programme se réinitialise, c'est à dire qu'il recommence son exécution à partir de la première ligne ... Si l'exécution rencontre alors à nouveau les lignes DIM de déclaration de variables globales, l'erreur apparait. _________________ username : panoramic@jack-panoramic password : panoramic123 | |
| | | Invité Invité
| Sujet: Re: problème de structure ? Ven 21 Aoû 2015 - 8:59 | |
| Bonjour , et merci Jack pour ton intervention. De toute façon j'ai au moins une erreur, mais pas le temps de voir aujourd'hui. J'ai par exemple 2 else entre IF et END_iIF. Problème: je voulais mettre la liste des if else end_if, mais rien que pour cela, j'ai un dépassement de message sur le site. Cela ressemble à cela: - Spoiler:
- Code:
-
4| <**IF/THEN**> if width(0) < 600 then width 0,600 42| <**IF/THEN**> if dir_exists(projet$) = 0 then dir_make projet$ 44| if 1=2 49| end_if :' teste timer maison sans événement | 55| if 1 = 2 59| end_if | 153| if y < 18 : ' menu 156| | if x < 21 and scancode = 0 158| | end_if | | 159| | if x < 21 and scancode = 1 161| | | <**IF/THEN**> if choix_menu% = 0 then menu() : else : MENUcouleur() 161| | if choix_menu% = 0 then menu() : else : MENUcouleur() 163| | else 164| | | if choix_menu% = 0 :' menu classique 167| | | | <**IF/THEN**> if menu$(L)="" then exit_for 169| | | | if x > mnu%(L-1) and x < mnu%(L) 172| | | | | <**IF/THEN**> if Mnu%(L)=0 then exit_repeat 175| | | | | <**IF/THEN**> if retour$ <> "" then evenements_menu(retour$) 176| | | | end_if | | | | 178| | | else 181| | | end_if | | | 182| | end_if | | 186| ELSE 194| | if liste$(n,0) <> "" 196| | | <**IF/THEN**> a$ = liste$(n,0) : if right$(a$,1) <> "/" then a$ = a$ + "/" 200| | | if v > 0 212| | | | <**IF/THEN**> case 8:if numeric(b$)=1 then ecart=val(b$): pos(7)=ecart 214| | | end_if | | | 218| | end_if | | 220| end_if
|
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: problème de structure ? Ven 21 Aoû 2015 - 11:17 | |
| Je suis à peu près certain que ce n'est pas la raison, mais je vais quand même t'indiquer mon observation Cosmos. Sait-on jamais ? La ligne 4728 de ton code (en début de ce post) est vide. Je me suis dit que ça bloque peut-être la "boucle IF ELSE END_IF". Tu peux toujours essayer de la supprimer, ça ne coûte rien. A+ | |
| | | Invité Invité
| Sujet: Re: problème de structure ? Ven 21 Aoû 2015 - 13:09 | |
| Bonjour Jean-Claude
Pour ce qui est de la ligne 4728, il n'y a pas de cause à effet, d'ailleurs, dans la trace cette ligne est sautée.
De plus j'ai situé l'erreur, mais c'est une procédure de près de 1000 lignes. Le fait qu'il y ait 2 ELSE n'est pas non plus la conséquence, car l'endroit où elle est située est une sub que j'ai mis de côté, pour cause de reprise de code, pour avoir changé d'idée en cours de route. Mais dans cette procédure il y a un END_IF de trop, et comme le programme se lance, ça veut dire qu'il en manque un dans la sub de remplacement. Ces jours-ci je retirerai la sub écartée, mais je la conserve pour récupérer une partie du code, et je regarderai en détails, où je dois remettre le END_IF qui manque dans cette sub. J'ai près de 1200 lignes de IF/THEN/ELSE/END_IF dans ce programme pour l'instant.
A+ |
| | | Invité Invité
| Sujet: Re: problème de structure ? Ven 21 Aoû 2015 - 15:45 | |
| Voila, j'ai lancer mon ordi ouvert, et en passant de temps en temps, j'ai mis en route les outils que j'ai fait. Ainsi avec l'indentation automatique ainsi que la recherche de structure, même si cela a été fait du temps des gosub, alors que les subs étaient inexistantes, j'ai réussi très rapidement à trouver la faille, et un teste de suite, montre que le problème est résolu.
Mais pourquoi j'ai mis ceci dans les bugs?, et avec ce titre? En pensant à structure je pensais au parser de Panoramic. Pour moi il y a problème. Si effectivement il y a une mauvaise organisation d'un source, si le programme arrive a un moment où il ne sait plus quoi faire, il devrait s'arréter sur la ligne en défaut, donner le n° de ligne. Là le programme a refait un redémarrage à la première ligne, en gardant toute sa mémoire sur ce qui est fait. Pour moi il y a un problème, et je pense effectivement au bug. On peut toujours demander à Jack d'être très attentif à l'ordre des instructions de boucles, mais peut réaliste, car à ce moment là il faudra aussi tenir compte qu'un goto peut inverser un ordre. Néanmoins je pense que le programme devrait s’arrêter et dire qu'il y a un problème inconnu si on veut. D'ailleurs trop de testes finiraient par ralentir Panoramic.
Je ne mets par résolu, vu que ce que je viens de dire, laisse pour moi un problème, à moins que la majorité d'entre-vous pense le contraire, dans ce cas je suivrais. |
| | | Contenu sponsorisé
| Sujet: Re: problème de structure ? | |
| |
| | | | problème de structure ? | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |