Pedro
Nombre de messages : 1594 Date d'inscription : 19/01/2014
| Sujet: Problème avec les "if". Dim 22 Nov 2015 - 10:13 | |
| Bonjour. J'ai un gros problème avec mon programme de plus de 41.000 lignes ! Panoramic refuse de l'exécuter et m'affiche l'erreur suivante: MORE IF THAN END_IF ! J'ai donc écrit la routine de vérification suivante, qui ne me signale aucune erreur ! Merci de votre aide. - Code:
-
dim a$, b$, c$, l%, flag%, n1%, n2% b$="if " c$="then"
file_open_read 1,"langues.bas"
while file_eof(1)<>1 file_readln 1,a$ a$=trim$(a$) l%=l%+1 if mod(l%,1000)=0 then caption 0,"Ligne "+str$(l%) ' if l%=19649 then exit_while if left$(a$,2)<>"' " ' "then" en fin de ligne ? if instr(a$,b$)>0 and right$(a$,4)=c$ then message "Erreur ligne "+str$(l%) ' Ligne commençant par "if" ou contenant " if " et ne contenant pas de "then". if instr(a$,c$)=0 if left$(a$,3)=b$ or instr(a$," "+b$)>0 then n1%=n1%+1 end_if if left$(a$,6)="end_if" then n2%=n2%+1 end_if end_while if n1%<>n2% then message "Erreur !" file_close 1 message "fin" | |
|
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Problème avec les "if". Dim 22 Nov 2015 - 10:26 | |
| Ton code est loin de détecter l'ensemble des anomalies d'écriture : Regarde ceci: - Code:
-
dim i% : i% = 17 dim k% : k% = 23
message "a" : if i%=17 : message "b" : end_if : message "c" message "d" : if k%=17 : message "e" : else : message "f" Il y a à l'évidence un END_IF qui manque, et Panoramic le détecte. Mais pas ton code... Et à part le END_IF manquant, le code est correct - mets la dernière ligne en commentaire et exécute, tu verras. Ce que je veux dire ? Tu peux très bien avoir dans ton code un résidu de modification qui laisse un IF en milieu de ligne, ou un END_IF de ma même manière. Et tu ne le trouveras pas avec un code aussi simple. La technique à utiliser: prends ton code, morceau par morceau. Copie chaque morceau dans un nouvel onglet de l'éditeur et faus "Run". Certes, l'exécution plantera. Aucune importance - c'est voulu. Si tu as un plantage autre que le message "MORE IF THAN END_IF !", c'est que l'anmalie n'est pas dans cette section, puisque le test des IF...END_IF est effectué avant le lancement réel. Et ainsi, en quelques essais par grandes sections, tu peux réduire la localisation, et ensuite affiner par la même technique. | |
|
Pedro
Nombre de messages : 1594 Date d'inscription : 19/01/2014
| Sujet: Problème avec les "if". Dim 22 Nov 2015 - 10:36 | |
| Bonjour.
OK, merci Klaus.
Si je comprends bien, le test des 'if' est bien le premier test réalisé avant l'exécution.
Je viens de tester ceci:
. Placer un b$="" en 1ère ligne de programme, sans avoir déclaré au préalable la variable b$. . Placer un 'if a=0' non suivi de 'then' ligne 41000.
Au lancement, j'ai bien un more if than end_if.
Et je trouve cela génial, car cela confirme tes propos.
C'est un moyen plus 'simple' de trouver la source d'une erreur de ce type. | |
|
Contenu sponsorisé
| Sujet: Re: Problème avec les "if". | |
| |
|