Mai 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 | 31 | | | Calendrier |
|
| | Mon Panoramic ne sait plus compter les if | |
| | Auteur | Message |
---|
Yannick
Nombre de messages : 8611 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: Mon Panoramic ne sait plus compter les if Ven 30 Jan 2015 - 21:22 | |
| - Code:
-
dim x%,a$,Nif%,Nelse%,Nthen%,Nendif%,dif%
dlist 1 file_load 1,"C:\Users\Yannick\Desktop\PPE_2_04\Recovery.bas"
memo 2 full_space 2 bar_both 2
for x%=1 to count(1)
a$=item_read$(1,x%)
if instr(a$,"if")>0 item_add 2,"("+str$(x%)+") if" Nif%=Nif%+1 end_if
if instr(a$,"else")>0 item_add 2,"("+str$(x%)+") else" Nelse%=Nelse%+1 end_if
if instr(a$,"then")>0 item_add 2,"("+str$(x%)+") then" Nthen%=Nthen%+1 end_if
if instr(a$,"end_if")>0 item_add 2,"("+str$(x%)+") end_if" Nendif%=Nendif%+1 end_if
next x%
item_add 2,"Nombre de if : "+str$(Nif%) item_add 2,"Nombre de else : "+str$(Nelse%) item_add 2,"Nombre de then : "+str$(Nthen%) item_add 2,"Nombre de end_if : "+str$(Nendif%)
if Nif%>(Nthen%+Nendif%) dif%=Nif%-(Nthen%+Nendif%) item_add 2,str$(dif%)+" if de plus" else if Nif%<(Nthen%+Nendif%) dif%=(Nthen%+Nendif%)-Nif% item_add 2,str$(dif%)+" de moins" else item_add 2,"Egalité" end_if end_if
end Je me suis retrouvé avec un de ces messages énervant en voulant ajouter une procédure à mon éditeur. Et voilà la surprise en créant un petit code pour retrouver mes " if, then, else, end_if". | |
| | | Yannick
Nombre de messages : 8611 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Ven 30 Jan 2015 - 23:31 | |
| Arrêt - Démarrage de l' ordi Nettoyage de disque Anti Malware Désinstallation ré-installation Rien n' y fait , quelqu' un a une idée ?... | |
| | | Klaus
Nombre de messages : 12301 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Mon Panoramic ne sait plus compter les if Sam 31 Jan 2015 - 0:03 | |
| C'est un bug dans la compilation de Panoramic. Il y a une confusion entre les commandes IF et les mots IF dans une chaîne de caractères, ainsi que les if% dans les noms de variables. Le source suivant compile sans problème: - Code:
-
dim x%,a$,Nixf%,Nelxse%,Nthxen%,Nendixf%,dixf%
dlist 1 file_load 1,"C:\Users\Yannick\Desktop\PPE_2_04\Recovery.bas"
memo 2 full_space 2 bar_both 2
for x%=1 to count(1)
a$=item_read$(1,x%)
if instr(a$,"i"+"f")>0 item_add 2,"("+str$(x%)+") i"+"f" Nixf%=Nixf%+1 end_if
if instr(a$,"el"+"se")>0 item_add 2,"("+str$(x%)+") el"+"se" Nelxse%=Nelxse%+1 end_if
if instr(a$,"th"+"en")>0 item_add 2,"("+str$(x%)+") th"+"en" Nthxen%=Nthxen%+1 end_if
if instr(a$,"end_i"+"f")>0 item_add 2,"("+str$(x%)+") end_i"+"f" Nendixf%=Nendixf%+1 end_if
next x%
item_add 2,"Nombre de i"+"f : "+str$(Nixf%) item_add 2,"Nombre de el"+"se : "+str$(Nelxse%) item_add 2,"Nombre de th"+"en : "+str$(Nthxen%) item_add 2,"Nombre de end_i"+"f : "+str$(Nendixf%)
if Nixf%>(Nthxen%+Nendixf%) dixf%=Nixf%-(Nthxen%+Nendixf%) item_add 2,str$(dixf%)+" i"+"f de plus" else if Nixf%<(Nthxen%+Nendixf%) dixf%=(Nthxen%+Nendixf%)-Nixf% item_add 2,str$(dixf%)+" de moins" else item_add 2,"Egalité" end_if end_if
end Je suis d'accord - c'est illisible. Mais ça marche. J'ai coupé toutes les chaînes de caractères contenant des mots-clé liés au IF...END_IF, ainsi que les noms des variables associés dans lesquels j'ai inséré un "x" pour rendre les mots-clé indétectables. Je te suggère de poster les deux versions dans un rapport de bug, dans la rubrique appropriée. | |
| | | Yannick
Nombre de messages : 8611 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Sam 31 Jan 2015 - 0:10 | |
| Mais si tu écris cela : - Code:
-
if 1=1 print "if" else print "r" end_if
end Il n' y a pas de confusion... Là où je ne comprends pas c' est sur le source de PPE 2.04. J' ai repris tous les fichiers et je ne vois rien. L' appel à une fonction avec 2 if...else...end_if imbriqués renvoie une erreur en sorti avec une ligne qui ne correspond à rien si ce n' est le début d' un label. "Change:" Je vais mettre ca dans les bugs ou pas et Jack nous en dira plus. En tout cas je récupère tes modifs pour tester mon source, merci Klaus. | |
| | | Yannick
Nombre de messages : 8611 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Sam 31 Jan 2015 - 3:30 | |
| Je n' y comprends plus rien !!! J' ai mis à jour le zip de PPE 2.04 sur mon webdav. Pour ceux qui voudrait jeter un oeil à mon problème : - cliquez sur la première icône de la toolbar. - cliquez sur "Cancel" dans la fenêtre du "message_input" La sub appelée est ligne 1863 L' appel se fait dans le label Change ligne 258 case 2 et là le résultat est plus que surprenant . J' ai vérifié, je n' ai pas de problème avec mes if...else...end_if J' ai le compte de if, else, end_if, then et pas de meli-melo... | |
| | | Klaus
Nombre de messages : 12301 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Mon Panoramic ne sait plus compter les if Sam 31 Jan 2015 - 10:46 | |
| Je pense que c'est encore un bug dans Panoramic. J'ai mémorisé le résultat de message_input dans une variable locale. J'ai ensuite testé cette variable, au lieu d'interroger directement le résultat de la fonction. Et il n'y a plus de problème: - Code:
-
' CREATION D UN PROJET Sub Create_Projet() dim_local KGF% L: ' if message_input("Nouveau projet","Nom du projet :","")=1 KGF% = message_input("Nouveau projet","Nom du projet :","") if KGF%=1 if message_text$<>"" message message_text$ else if message_warning_ok( "Vous devez donner un nom à vôtre projet !")=1 goto L end_if end_if else exit_sub end_if End_sub ' OUVERTURE D UN PROJET
| |
| | | Yannick
Nombre de messages : 8611 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Sam 31 Jan 2015 - 12:24 | |
| Avant de poster mon message cette nuit, pour voir, j' avais tester cela qui simule mon programme sans tout le reste : - Code:
-
Dim x% : x%=1 Label Choix,L
Gosub Choix
end
Choix: select x% case 1 Ma_sub() case 2 end_select return
Sub Ma_sub() L: if message_input("ma fenêtre","Mon info :","")=1 if message_text$<>"" message message_text$ else if message_warning_ok("Vous devez donner une info !")=1 goto L end_if end_if else exit_sub end_if end_sub et cela fonctionne correctement. | |
| | | Klaus
Nombre de messages : 12301 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Mon Panoramic ne sait plus compter les if Sam 31 Jan 2015 - 12:51 | |
| C'est une manière comme une autre de ne pas tester directement la valeur de retour de MESSAGE_INPUT, à l'intérieur d'une construction SELECT...END_SELECT. Le bug se situe à ce niveau-là. C'est bien un problème qui vient de Panoramic. | |
| | | Yannick
Nombre de messages : 8611 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Sam 31 Jan 2015 - 13:27 | |
| @ Klaus, Cela étant ta solution fonctionne et je l' adopte car, il me semble, ce sera la bonne façon de faire appel à message_input pour Panoramic_Compilator. Merci pour ton aide Klaus, je me voyais déjà en train de créer une enième fenêtre... | |
| | | Contenu sponsorisé
| Sujet: Re: Mon Panoramic ne sait plus compter les if | |
| |
| | | | Mon Panoramic ne sait plus compter les if | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |