Avril 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 |
|
| | est-ce un bug sur IF et END_IF? | |
| | |
Auteur | Message |
---|
Invité Invité
| Sujet: est-ce un bug sur IF et END_IF? Dim 31 Oct 2010 - 13:22 | |
| Je faisais un essai pour essayer de voir si dans un programme, on pouvait retrouver les erreurs du à la mauvaise coordination des IF et des END-IF, et je suis pris à mon propre piège. Le programme n'est pas fini, il ne tient pas compte des majuscules, et parfois de plusieurs instructions sur une même ligne, et je crois qu'il y a un teste qui n'est pas fait. J'ai tapé au départ au petit bonheur la chance, pour voir la faisabilité de voir si dans chaque sous programme, les IF et les END_IF correspondaient. et j'ai continué. J'avais aucun plan au départ. Il fonctionne ainsi: au départ je recherche tous les labels. Ensuite je ne garde que le premier, et celui qui suit un return. Les labels à l'intérieur d'un sous programme ne m'intéresse pas. Ensuite seulement je suis chaque label valide pour sortir à return, et je contrôle. Mais voila! Je lance le programme, et je me trouve avec un message d'erreur: (5)More END_IF than IF. J'ai mis tous les IF et END_IF qui étaient dans les commentaires entre guillemets. J'ai fais plusieurs calculs, et je me trouve (en écartant les IF / THEN, qui s'annule) avec 15 IF, et 15 END_IF. Vraiment où est l'erreur? J'avais cette erreur hier soir. J'ai laissé passé la nuit, pour revoir avec des yeux neufs, et je ne vois pas l'erreur. Si quelqu'un a des meilleurs yeux que mois. Merci - Code:
-
' essai pour trouver les boucles width 0,500:height 0,screen_y label boucle,controle,va_vers_next dim a%,b%,a$,b$, f$,bon%,ferm%,nb% dim tant%,sinon%,jusqua% ' déclaration des objets list 1:width 1,150:height 1,100:color 1,247,243,206:font_size 1,10:' jaune pâle open_dialog 2 : filter 2,"|ouvrir le fichier controler|*.bas"
list 3:left 3,160:width 3,150:height 3,100:font_size 3,12:top 3,700 list 4:left 4,320:width 4,150:height 4,100:font_size 4,12 dlist 5:' top 5,200 list 6: top 6,200:left 6,200 list 7:top 7,400 memo 8:top 8, 200:width 8,480:height 8,400:font_size 8,12:font_color 8,255,0,0 ' ------------
repeat read a$:if a$="$$$" then exit_repeat item_add 1,a$ until a$="$$$"
' clear 1:f$=file_name$(2) : file_load 1,f$
gosub boucle gosub controle
end ' =========fin========== boucle: if count(1)>0 for a%=1 to count(1) a$=trim$(item_read$(1,a%)) if instr(a$," ")=0 and right$(a$,1)=":" :' label item_add 3,a$:item_add 5,a% end_if if instr(lower$(a$),"return")>0 then item_add 3,"return":item_add 5,a% next a% end_if if count(3)>0 ferm%=0 for a%=1 to count(3) a$=item_read$(3,a%) if ferm%=0 and a$<>"return" then item_add 4,a$ :item_add 6,item_read$(5,a%): ferm%=1 if a$="return" then ferm%=0 next a% end_if return
' ============="on regarde chaque label jusqu'au return, on le met dans une liste, et on vérifie" controle: ' la list 3, ne sert plus, donc on va s'en reservir
if count(6) > 0 for a%=1 to count(6) clear 3 tant%=0:sinon%=0:jusqua%=0 for b%=val(item_read$(6,a%)) to count(1) a$=trim$(item_read$(1,b%)):a$=lower$(a$) if instr(a$,"return")>0 then exit_for: ' il faudra regarder si des fois plusieurs instructions avant return if instr(a$,"if")>0 and instr(a$,"then")>0 then goto va_vers_next: message " then ligne:"+ str$(b%):' on n'en tient pas compte if instr(a$,"if")>0 and instr(a$,"end_if")=0 then tant%=tant%+1:item_add 3,string$(tant%,"1"):item_add 7,b% if instr(a$,"else")>0 then sinon%=sinon%+1:item_add 3,string$(sinon%,"2"):item_add 7,b% if instr(a$,"end_if")>0 then jusqua%=jusqua%+1:item_add 3,string$(jusqua%,"3"):item_add 7,b% va_vers_next: next b%
if count(3)>0 a$=item_read$(3,count(3)) if left$(a$,1)<>"3" if a%<count(6) item_add 8, " 'END_IF' manque dans le sous programme :" + item_read$(4,a%)+" depuis la ligne:" + item_read$(6,a%)+" et avant la ligne:"+item_read$(6,a%+1) else item_add 8, " 'END_IF' manque dans le sous programme :" + item_read$(4,a%)+" depuis la ligne:" + item_read$(6,a%) end_if exit_for else nb%=len(a$) end_if
' maintenant on sais qu'il y a au moins un "END_IF". Voir si le nombre est supérieur à "IF" for b%=count(3) to 1 step -1 ' plus de "END_IF" que de "IF" if len(item_read$(3,b%))<nb% and left$(item_read$(3,b%),1)="1" if a%<count(6) item_add 8, "manque 'IF' dans le sous programme :"+item_read$(4,a%)+" depuis la ligne:"+ item_read$(6,a%)+" et avant la ligne:"+item_read$(6,a%+1) else item_add 8, "manque 'IF' dans le sous programme :"+item_read$(4,a%)+" depuis la ligne:"+ item_read$(6,a%) end_if end_if ' moins de "END_IF" que de "IF" if len(item_read$(3,b%))> nb% and left$(item_read$(3,b%),1)="1" if a%<count(6) item_add 8,"manque 'END_IF' dans le sous programme:"+item_read$(4,a%)+ " depuis la ligne:"+item_read$(6,a%)+" et avant la ligne:"+item_read$(6,a%+1) else item_add 8,"manque 'END_IF' dans le sous programme:"+item_read$(4,a%)+ " depuis la ligne:"+item_read$(6,a%) end_if exit_for end_if next b%
' maintenant on va contrôler ELSE for b%=1 to count(3)-1 a$=item_read$(3,b%) : b$=item_read$(3,b%+1) if len(a$)=len(b$) and left$(a$,1)="2" and left$(b$,1)="1" if a%<count(6) item_add 8,"'ELSE' à la place de 'IF' dans le sous programme:" + item_read$(4,a%) + " depuis la ligne:"+ item_read$(6,a%)+" et avant la ligne:"+item_read$(6,a%+1) else item_add 8,"'ELSE' à la place de 'IF' dans le sous programme:"+ item_read$(4,a%)+ " depuis la ligne:" + item_read$(6,a%) end_if exit_for end_if next b%
' maintenant on va regarder si "if" et "end_if" ne sont pas inversés il y a lien entre eux for b%=1 to count(3)-1 a$=item_read$(3,b%):b$=item_read$(3,b%+1) if len(a$)=len(b$) and left$(a$,1)="3" and left$(b$,1)="1" if a%<count(6) item_add 8," 'END_IF' est inversé par rapport à 'IF', à la ligne:"+item_read$(4,a%)+" depuis la ligne:"+ item_read$(6,a%)+ " et avant la ligne:"+ item_read$(6,a%+1) ' normalement si c'est else, ce devrait la ligne suivante. bon, on verra else item_add 8," 'END_IF' est inversé par rapport à 'IF', à la ligne:"+item_read$(4,a%) end_if exit_for end_if next b%
item_add 8,string$(40,"=") end_if
next a% end_if return ' ============================================================================== data " boucle1:" data " if a%=1 to 10" data " a%=a%+1" data " else" data " if xffdfdf" data "end_if" data " boucle 2" data "boucle 3" ' data "else" data "return" data "boucle4:" data " else" data "if" data "end_if" data "end_if" data "boucle5:" data "if" data "boucle 6:" data "return" data "$$$" A noté que pour faire des essais, j'ai commancé à mettre des lignes en data, et ne me préoccupant que des if/then/else/end_if. La lecture d'un fichier venant après. |
| | | Invité Invité
| Sujet: Re: est-ce un bug sur IF et END_IF? Dim 31 Oct 2010 - 13:49 | |
| À la ligne 100. Un END_IF de trop. |
| | | Invité Invité
| Sujet: Re: est-ce un bug sur IF et END_IF? Dim 31 Oct 2010 - 14:57 | |
| Bonjour Nicolas. Merci d'avoir regardé, mais je ne comprend pas. Le end_if de la ligne 100, est le pendant du if de la ligne 93, normalement. |
| | | 659_minifly
Nombre de messages : 590 Age : 75 Localisation : Valenciennes Nord Date d'inscription : 29/04/2010
| Sujet: Re: est-ce un bug sur IF et END_IF? Dim 31 Oct 2010 - 15:20 | |
| Ligne 134 un end_if en trop je ne comprend plus grand chose moi aussi j'ai répéter la meme manip et la j'ai une erreur more end_if then if j'ai mis un commentaire data "end_if" et ça remarche
Dernière édition par 659_minifly le Dim 31 Oct 2010 - 15:40, édité 2 fois | |
| | | JL35
Nombre de messages : 7095 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: est-ce un bug sur IF et END_IF? Dim 31 Oct 2010 - 15:29 | |
| N'empêche que le code semble correct, et que l'analyseur syntaxique se mélange les pinceaux avec tous ces ifs then et end_if effectifs, en commentaires ou dans des chaînes... et ce n'est pas normal. | |
| | | Invité Invité
| Sujet: Re: est-ce un bug sur IF et END_IF? Dim 31 Oct 2010 - 15:52 | |
| Bonjour et merci. Le END_IF de la ligne 134, correspond au IF de la ligne 55
Par contre il y avait un message après le goto va_vers_next qui ne servait plus, à la ligne 62 J'ai supprimé le message, en laissant le commentaire, et maintenant il n'y a plus de blocage. .Mais je ne pense pas que ce soit normal, qu'il y ait une influence avec les IF et les END_IF. A noté que le END_IF de la ligne 134, je l'ai rétabli. Donc mon programme n'avait pas d'erreur de ce côté là, juste le message qui normalement n'aurait jamais été lu. Merci. J'essayerai de finir ce programme, si dès fois il peut servir en cas de problème avec les If et END_IF |
| | | 659_minifly
Nombre de messages : 590 Age : 75 Localisation : Valenciennes Nord Date d'inscription : 29/04/2010
| Sujet: Re: est-ce un bug sur IF et END_IF? Dim 31 Oct 2010 - 15:53 | |
| j'ai mis LA LIGNE 63 EN DEUX - Code:
-
if instr(a$,"if")>0 and instr(a$,"then")>0 then goto va_vers_next message " then ligne:"+ str$(b%):' on n'en tient pas compte
j'ai remis le data "end_if" normal et ça marche !!!!!!!!!!!! | |
| | | Invité Invité
| Sujet: Re: est-ce un bug sur IF et END_IF? Dim 31 Oct 2010 - 16:09 | |
| Merci d'avoir regardé.
De toute façon le programme n'est pas au point pour l'instant, donc vous pouvez le laisser de côté. |
| | | Invité Invité
| Sujet: Re: est-ce un bug sur IF et END_IF? Dim 31 Oct 2010 - 23:44 | |
| Il y a quelque chose de pas normal. Le même programme qui est sauvegardé, fonctionne avec l'éditeur Panoramic, mais si il est exécuté par l'instruction chain qui va le chercher sur le disque (il n'y a pas de copie sur un autre emplacement), cette fois ci il retrouve une erreur avec MORE END_IF than IF...Alors? et alors? et Alors, Zoro est arrivé!. Malheureusement pas |
| | | 659_minifly
Nombre de messages : 590 Age : 75 Localisation : Valenciennes Nord Date d'inscription : 29/04/2010
| Sujet: Re: est-ce un bug sur IF et END_IF? Lun 1 Nov 2010 - 4:42 | |
| Enleve un :
data "end_if"
fin du programme.
tu verra il remarchera ( voir mon premier post ) | |
| | | Invité Invité
| Sujet: Re: est-ce un bug sur IF et END_IF? Lun 1 Nov 2010 - 8:16 | |
| Bonjour
Je veux bien enlever un data pour faire marcher le programme. Mais désolé, ce n'est pas normal. Depuis quand doit-on enlever des datas ou un message pour que Panoramic soit capable de faire en sorte que l'analyseur syntaxique ne commette pas d'erreur. Dans ce programme, c'est pas moi l'erreur. J'ai arrêté il y a 3/4 mois un programme, parce que je ne trouve pas une erreur sur IF END_IF. Peut-être est-ce le même problème. De plus il y a une différence entre le programme exécuté avec l'éditeur, et le programme qui fonctionne avec chain, et devrait normalement faire la même chose. Ça me paraît grave tout de même. |
| | | 659_minifly
Nombre de messages : 590 Age : 75 Localisation : Valenciennes Nord Date d'inscription : 29/04/2010
| Sujet: Re: est-ce un bug sur IF et END_IF? Lun 1 Nov 2010 - 16:17 | |
| j'ai aussi des problemes avec des sprites qui disparaissent en passant sur d'autres sprites alors qu'a coté j'ai les mêmes et le sprite est toujours visible. Bah on verra bien!
| |
| | | Nardo26
Nombre de messages : 2294 Age : 55 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: est-ce un bug sur IF et END_IF? Mar 2 Nov 2010 - 7:21 | |
| Bonjour, Cosmos, je pense que ton problème ne vient pas des if-end_if mais des DATAs. Je ne sais pas si tu t'en souviens mais Il y a quelques temps nous avions discuté des "particularités" des DATAs : Panoramic à tendance à interpréter ce qu'il y a dedans... Si tu remplaces tes DATA par une procédure de chargement (ce que tu avais commencé cf. l'objet 2) je suis sur que tu n'auras plus de problème... | |
| | | Invité Invité
| Sujet: Re: est-ce un bug sur IF et END_IF? Mar 2 Nov 2010 - 8:59 | |
| Bonjour, effectivement, j'y ai pensé, après avoir vu cela. Mais au départ, j'ai eu le même problème avec un message que je n'avais pas retiré pendant la mise au point, et qui se trouvait après le goto. En retirant le message, le programme ne bloquait plus. Ensuite selon que je lance depuis l'éditeur Panoramic, ou selon que j'utilise le lancement avec l'instruction CHAIN, je n'ai pas le même effet. |
| | | Nardo26
Nombre de messages : 2294 Age : 55 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: est-ce un bug sur IF et END_IF? Mer 3 Nov 2010 - 7:08 | |
| Bizarre, car moi de mon coté, j'obtiens la même chose que ce soit avec l'éditeur de panoramic ou avec ton utilitaire qui exécute un chain... j'ai viré le message après le goto et cela fonctionne...(du moins je n'ai pas de message d'erreur à l'exécution.. ) | |
| | | Invité Invité
| Sujet: Re: est-ce un bug sur IF et END_IF? Jeu 4 Nov 2010 - 14:07 | |
| Bonjour, Normalement, ne pouvant pas rester longtemps devant l'ordi, je ferme en mettant en veille prolongée, pour retrouver le travail tel qu'il était avant de quitter.
Je viens de refaire un démarrage, et j'ai essayé ce programme de nouveau en enlevant le message. Et maintenant j'ai le même résultat que celui que tu décris. Je me demande ce qui a pu faire une différence entre chain et l'éditeur. Mystère et boule de gomme... |
| | | Invité Invité
| Sujet: Re: est-ce un bug sur IF et END_IF? Dim 7 Nov 2010 - 19:22 | |
| Le p^rogramme que j'ai mis en démonstration, pour essayer de comprendre pourquoi il ne fonctionnait pas, je l'ai transformé pour contrôler les boucles IF ELSE END_IF les conditions IF THEN sont écartées, vu que THEN est reconnu sur la même ligne. Je n'ai pas fait de contrôle de rem pour l'instant, je modifirais lorsque le temps me sera fournit. Si il y a des remarques, j'en tiendrai compte d'ici là. Il se peut qu'il y est des variables inutiles, je verrais plus tard, mais pour un programme normal, cela devrait permettre de voir si les boucles sont normales. - Code:
-
' essai pour trouver les boucles width 0,500:height 0,screen_y label boucle,controle,va_vers_next,marge dim a%,b%,c%,a$,b$, f$,bon%,ferm%,nb%,m$ dim tant%,sinon%,jusqua%,ind%,s$(20) a$="123456789abcdefghijk" for a%=1 to 20:s$(a%)=mid$(a$,a%,1)+" ":next a% ' déclaration des objets dlist 1 :' width 1,150:height 1,100:color 1,247,243,206:font_size 1,10:' jaune pâle open_dialog 2 : filter 2,"|ouvrir le fichier controler|*.bas"
list 3 :width 3,450:height 3,900:font_size 3,12:font_name 3,"Bitstream Vera Sans Mono" dlist 4 dlist 5 dlist 6 ' ------------ f$=file_name$(2) : file_load 1,f$
gosub boucle gosub controle
end ' =========fin========== boucle: if count(1)>0 for a%=1 to count(1) a$=trim$(item_read$(1,a%)) if instr(a$," ")=0 and right$(a$,1)=":" :' label item_add 3,a$:item_add 5,a% end_if if instr(lower$(a$),"return")>0 then item_add 3,"return":item_add 5,a% next a% end_if if count(3)>0 ferm%=0 for a%=1 to count(3) a$=item_read$(3,a%) if ferm%=0 and a$<>"return" then item_add 4,a$ :item_add 6,item_read$(5,a%): ferm%=1 if a$="return" then ferm%=0 next a% end_if return ' ============= controle: ' la list 3, ne sert plus, donc on va s'en re servir clear 3 : clear 5 if count(6) > 0 for a%=1 to count(6) tant%=0:sinon%=0:jusqua%=0:ind%=0 item_add 3,item_read$(4,a%):item_add 3,"":item_add 5,"":item_add 5,"" for b%=val(item_read$(6,a%)) to count(1) a$=trim$(item_read$(1,b%)):a$=lower$(a$) if instr(a$,"return")>0 then exit_for gosub marge if instr(a$,"if")>0 and instr(a$,"then")>0 then goto va_vers_next if instr(a$,"if ")>0 and instr(a$,"end_if")=0 ind%=ind%+1:gosub marge item_add 3,s$(ind%)+m$+"if" :item_add 5,b% end_if if instr(a$,"else")>0 then item_add 3,s$(ind%)+m$+"else":item_add 5,b% if instr(a$,"end_if")>0 gosub marge item_add 3,s$(ind%)+m$+"end_if":item_add 5,b%:ind%=ind%-1 item_add 3,string$(ind%*4+5," ")+"------":item_add 5,"" end_if va_vers_next: next b% item_add 3,"=======================":item_add 5,"" next a% b%=0 for a%=1 to count(3) if len(item_read$(3,a%))>b% then b%=len(item_read$(3,a%)) next a% for a%=1 to count(3) if numeric( item_read$(5,a%))=1 a$=left$( item_read$(3,a%)+string$(b%," "),b%+2) + "[" + item_read$(5,a%) + "]" item_delete 3,a%:item_insert 3,a%,a$ end_if next a% end_if return ' ============================================================================== marge: if ind%=1 m$=" " else m$="" for c%=1 to ind% m$=m$+" |" next c% end_if return Le commentaire tout de même: il faut charger un fichier bas, pour voir les boucles IF THEN END_IF, si ce n'était pas compris. |
| | | Nardo26
Nombre de messages : 2294 Age : 55 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: est-ce un bug sur IF et END_IF? Dim 7 Nov 2010 - 20:38 | |
| bonsoir Cosmos, Pour reprendre la formule de jjn4 : c'est presque parfait ! Par contre il faut que tu filtres les commentaires : Extrait de code qui pose pb : - Code:
-
..... if Objet$(i%,1)= left$(ligne$,len(ligne$)-1) Objet$(i%,4)=str$(ligne%) : ' on mémorise l'emplacement de l'étiquette FormatResult% = i%: gosub FormatResult if VERBOSE = 1 then item_add mDebug%,"Etiquette deja déclarée trouvé:<"+Objet$(i%,1)+">" ' sinon c'est une nouvelle étiquette else ' j'ai bien envi d'un petit goto sur le else d'en-dessous.... <--- A CET ENDROIT TON PROG VOIT UN ELSE DE TROP ' mais cela rajoute une étiquette... ;) ..... Bien pratique ton prog !!! | |
| | | Invité Invité
| Sujet: Re: est-ce un bug sur IF et END_IF? Dim 7 Nov 2010 - 23:02 | |
| Bonsoir Nardo, Je ne pensais pas reprendre ce programme, et j'étais sur le point de l'effacer, et d'enlever l'onglet. Avant j'ai vérifié que la dernière mouture de JL35, pour voir si il avait fait les modification sur IF et END_IF. J'ai du mal comprendre, je pensais que c'était fait. Bon, j'ai repris en partie le programme pour voir le résultat que j'attendais, vérifier que l'idée était bonne.
Il y a encore deux point à contrôler: les rem et les chaines de caractères. Je pourrais aussi, voir la partie qui se trouve avant le END.
Ce sera pour plus tard. Peut-être faudrait-il que je filtre d'avantage le IF pour être sure qu'il ne soit pas partie non pas d'un mot clé (je n'en vois pas), mais d'une variable entière comme "definitif". L'instruction INSTR(), c'est pas mal, mais il faut être très pointilleux. Ce serait plus simple, si comme fait JL35, on mettait un espace entre chaque mot, commande etc Il y a =/*-+:, et surement d'autre.
Besoin d'y réfléchir.
Celà dit, la recherche se fait sur un code de programmation normal, en essayant d'être logique. Si je mets un IF dans un sous-programme, pour faire un goto dans un autre programme, et trouver le END_IF, je n'ai même pas envie de tester ce genre de programme "spaghetti". Ça ne m'intéresse pas. Mais n'ayant pas beaucoup de temps, et si cela intéresse quelqu'un pour reprendre mon programme, cela ne me dérange pas. Je dirais même que cela m'arrange. Ce n'était qu'une parenthèse. |
| | | Nardo26
Nombre de messages : 2294 Age : 55 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: est-ce un bug sur IF et END_IF? Dim 7 Nov 2010 - 23:12 | |
| Hello cosmos ! même dans le cas d'un programme spaghetti tu es obligé d'avoir autant de if que de endif même si tu rajoutes des goto un peu partout: --->sinon l"interpréteur de pano te crache à la tronche : "Hep mon gars, va falloir que tu comptes tes if et end_if : il en manque !" Bon j'exagère un peu, mais c'est à peu près ce message qu'il t'affiche... [edit] J'ai essayé d'en écrire un pour tester mon prog, avec des goto qui renvoi sur d'autres end_if, dans tous les cas, il faut le couple if-end_if je n'y arrive pas... faut dire que je suis pas italien... [/Edit] | |
| | | Invité Invité
| Sujet: Re: est-ce un bug sur IF et END_IF? Dim 7 Nov 2010 - 23:41 | |
| On est d'accord, qu'il faut un couple, mais: mon programme s'arrète à return, et remet le compteur à zéro, pour démarrer le sous-programme suivant.
Donc je fais un teste pour un cas conventionnel. En mettant la variable ici ind% à 0 (Tient les variables tant%, sinon%, jusqua% sont à supprimer!), si tu fais du spaghetti, les IF ont perdus leur décalages.
Maintenant il faudra faire un teste poussé sur les GOTO qui ont l'air de perturber le contrôle du couple IF END_IF, si une instruction est ajoutée (et inutile) après le goto
Remarque: c'est tout simple, pour une programmation "loufoque" il suffit de mettre un check, et on évite tous les labels et les return
Encore mieux, laisser les labels et return, et ne pas remettre à 0 ind%, à chaque nouvelle lecture d'un sous programme. Cela facilite le repérage en cas d'erreur |
| | | Klaus
Nombre de messages : 12274 Age : 74 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: est-ce un bug sur IF et END_IF? Lun 8 Nov 2010 - 10:11 | |
| @Cosmos70: As-tu pensé qu'un sousprogramme peut avoir des return à plusieurs endroits ? | |
| | | Invité Invité
| Sujet: Re: est-ce un bug sur IF et END_IF? Lun 8 Nov 2010 - 13:17 | |
| Bonjour Klaus, Oui effectivement. Mais ce programme je l'ai fait car j'ai un vieux programme que j'ai laissé de côté pour une erreur de boucle que je n'ai pas trouvé. Et c'est là que j'ai pris conscience de la construction des boucles à l'intérieur d'un sous programme, et qu'il pouvait y avoir une perturbation de celle-ci en ayant un end_id dans un autre sous programme.
Ce programme de recherche, j'allais l'effacer pensant (je m'en excuse JL35, il n'y a pas de critique) que JL35 avait modifier son programme suite à mes remarques. Je suis submergé d'onglet, aussi je l'ai repris provisoirement et vérifier que le résultat correspondait à mes attentes.
Il m'est difficile de faire des testes pour tous les cas. Personnellement j'évite ce type de construction. (je ne crois pas qu'en GFA Basic c'était possible), car ça manque de clarté. Le mieux est je pense de mettre un check pour faire une représentation avec les labels, mais sans la remise à zéro de l'indentation. Ainsi j'aurai ma propre construction, et généralement je pense que la plus par du temps, vous avez la même, et pour les cas particulier, on fait la même représentation que Panoramic fait le teste. Comment savoir si un return dans une ligne est un return supplémentaire.
En y repensant, je me demande si tel que j'ai construit le programme, cela soit si difficile à réaliser. Je recherche dans mon programme: "if instr(lower$(a$),"return")>0 then ". Il suffirait de voir: if trim$(lower$(a$))="return", ceci permet d'éviter de sortir en ayant un return en fin de ligne. Ensuite dans la procédure "controle", je fais la même chose, et normalement j'écarte ce problème.
Je vais noter. Mais j'ai repris mon programme précédent. Il était presque temps, j'avais du mal à rentrer dedans, et celui-ci est très important pour moi.
Par contre pour la recherche des boucles, celui-ci est ouvert, et qui veut le reprendre pour le finir est libre. C'est d'ailleurs pour celà que je l'ai laissé dans ce post, autrement je l'aurai publié dans vos sources. Qu'est-ce c'est chiant l'informatique, lorsqu’on a plusieurs projets en même temps, et peut de temps à y consacrer.
Je sais plus mais il me semble que je n'ai pas traité les noms clés majuscules. C'est pas dur, mais ça doit pas être fait. A plus tard pour ce programme si personne ne veut le reprendre.
Je viens de me relire: du vrai charabia! mais je dois fermer |
| | | Nardo26
Nombre de messages : 2294 Age : 55 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: est-ce un bug sur IF et END_IF? Lun 8 Nov 2010 - 13:57 | |
| Je n’arrive toujours pas à comprendre pourquoi les goto posent un problème par rapport aux [if-end_if] . Peux-tu me donner un exemple qui pose soucis en 5 lignes ?
| |
| | | Invité Invité
| Sujet: Re: est-ce un bug sur IF et END_IF? Lun 8 Nov 2010 - 15:28 | |
| Un exemple: à la ligne 55 (si c'est le même N° que sur l'ordi), il y a goto va_vers_next, tu rajoutes - Code:
-
:print :' ou une autre commande, et là il y a une erreur signalée C'est vrai qu'après un goto, toute instruction est inutile, mais delà à modifier le décompte des IF/END_IF. Il faudrait aussi voir si le problème existe avec les autres boucles while, repeat. |
| | | Contenu sponsorisé
| Sujet: Re: est-ce un bug sur IF et END_IF? | |
| |
| | | | est-ce un bug sur IF et END_IF? | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |