FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» KGF_dll - nouvelles versions
par Jicehel Hier à 23:19

» Ras la casquette...
par Yannick Hier à 18:48

» Problème avec 'instr_last'.
par Yannick Hier à 18:42

» Jeu de l'oie stratégique
par jjn4 Jeu 23 Mar 2017 - 20:46

» Suite aux dernières commandes
par Yannick Jeu 23 Mar 2017 - 16:00

» Aide (imprimable) sur PANORAMIC avec exemples
par papydall Jeu 23 Mar 2017 - 14:28

» Jeu de l'OIE électronique
par jjn4 Mer 22 Mar 2017 - 18:26

» Jeu de l'oie interplanétaire
par jean_debord Mar 21 Mar 2017 - 11:11

» Problème de création d'exécutable.
par Yannick Mar 21 Mar 2017 - 5:21

» Un bug avec USER_EVENT ?
par Klaus Lun 20 Mar 2017 - 17:41

» Bienvenue Cherrie merrie !
par Yannick Lun 20 Mar 2017 - 3:55

» Bienvenue à v.rousseau
par Yannick Dim 19 Mar 2017 - 16:26

» Panoramicien, es-tu là ?
par papydall Dim 19 Mar 2017 - 3:48

» Charger des icones sans fichiers...
par Laurent (Minibug) Sam 18 Mar 2017 - 21:52

» Compilateur FBPano
par papydall Jeu 16 Mar 2017 - 14:50

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mars 2017
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier

Partagez | 
 

 Panoramic Editor a fumé la moquette...

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Yannick

avatar

Nombre de messages : 7304
Age : 45
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: Panoramic Editor a fumé la moquette...   Sam 10 Oct 2015 - 18:10



J' ai même redémarré mon ordi pour être sûr qu' il ne traine pas un processus solitaire et vicieux.
scratch scratch scratch scratch scratch scratch scratch scratch scratch
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Marc37



Nombre de messages : 381
Age : 56
Localisation : TOURS
Date d'inscription : 18/03/2014

MessageSujet: Re: Panoramic Editor a fumé la moquette...   Sam 10 Oct 2015 - 18:31

Bonjour Ygeronimi,

Je pense que les "END_IF" sont de trop...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 7304
Age : 45
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Sam 10 Oct 2015 - 18:34

Ca c' est ce qu' il dit.
Mais regarde le source 3 "if" , 3 "end_if", ou est celui de trop ?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Marc37



Nombre de messages : 381
Age : 56
Localisation : TOURS
Date d'inscription : 18/03/2014

MessageSujet: Re: Panoramic Editor a fumé la moquette...   Sam 10 Oct 2015 - 18:41

Les 3 sont de trop ... (a mon avis !)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Marc37



Nombre de messages : 381
Age : 56
Localisation : TOURS
Date d'inscription : 18/03/2014

MessageSujet: Re: Panoramic Editor a fumé la moquette...   Sam 10 Oct 2015 - 18:45

Une ligne qui commence par IF ne se termine jamais par un END_IF

Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 7304
Age : 45
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Sam 10 Oct 2015 - 18:47

Shocked  Cela serait nouveau...
...tu devrais relire la doc Marc.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Marc37



Nombre de messages : 381
Age : 56
Localisation : TOURS
Date d'inscription : 18/03/2014

MessageSujet: Re: Panoramic Editor a fumé la moquette...   Sam 10 Oct 2015 - 18:52

Enlève les trois END_IF et fais l'essai !

EDIT : Je viens de relire la doc et je confirme : pas de END_IF à la fin !

Le END_IF doit être mis que dans une structure "verticale" :
Par exemple :

IF condition
instructions
instructions
...
END_IF
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 7304
Age : 45
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: Re   Sam 10 Oct 2015 - 19:13

Essayes donc et tu verras que tu auras un crash.

"If" à soit un "end_if" pour clore l' instruction soit un "then" et là et seulement là tu n' as pas de "end_if".

if <condition> : <instruction> : end_if
if <condition> : <instruction> : else :<instruction 2>: end_if 
if <condition> then <instruction> 

la seule différence est les ":" séparateur quand tu places le tout sur la même ligne.

Je pense que j' aurai eu un problème avant la 3500 ème ligne si j' étais dans l' erreur... Laughing

Même ceci :
Code:
dim i%,a$,nif%,nend%,nth%

height 0,650
width 0,1200

memo 1
full_space 1
bar_both 1

dlist 2
file_load 2,"C:\Users\Yannick\Desktop\PLM_Site_Créator\PLM_SIte_creator.bas"

for i%=1 to count(2)
   a$=lower$(item_read$(2,i%))
   if instr(a$,"then")>0
      nth%=nth%+1
      item_add 1,"Ligne : "+right$(string$(4,"0")+str$(i%),4)+" THEN"
   end_if
next i%

item_add 1,str$(nif%)
item_add 1,str$(nth%)
item_add 1,str$(nend%)

end


me provoque le même message violent.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 5256
Age : 66
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Panoramic Editor a fumé la moquette...   Sam 10 Oct 2015 - 19:29

Salut ygeronimi

J’ai reconstitué le code d’après l’image-écran.

Code:

dim i%,a$,nif%,nend%,nth%
height 0,650 : width 0,1200
memo 1 : full_space 1 : bar_both 1
dlist 2 : file_load 2, "c:\users\Yannick\desktop\PLM_Site_creator.bas"
for i% = 1 to count(2)
    a$ = lower$(item_read$(2,i%))
    if instr(a$,"if") > 0     : nif% = nif% + 1   : item_add 1,"Ligne : " + right$(string$(4,"0") + str$(i%),4) + "IF"     : end_if
    if instr(a$,"then") > 0   : nth% = nth% + 1   : item_add 1,"Ligne : " + right$(string$(4,"0") + str$(i%),4) + "THEN"   : end_if
    if instr(a$,"end_if") > 0 : nend% = nend% + 1 : item_add 1,"Ligne : " + right$(string$(4,"0") + str$(i%),4) + "END_IF" : end_if
next i%

Après quelques tests, voici le diagnostic :
Le problème se trouve en ligne 8 (le 2ème test)
C’est le 1er then qui pose problème pour Panoramic.
La suite de 4 lettres t,h,e,n dans cet ordre pose problème pour Panoramic, même s’ils sont à l’intérieur d’un mot comme athene.

Voici la solution :
Définir le mot then par une variable t$ = "then" et faire le test sur t$

Code:

dim i%,a$,nif%,nend%,nth%,t$
t$ = "then"
height 0,650 : width 0,1200
memo 1 : full_space 1 : bar_both 1
dlist 2 : file_load 2, "c:\users\Yannick\desktop\PLM_Site_creator.bas"
for i% = 1 to count(2)
    a$ = lower$(item_read$(2,i%))
    if instr(a$,"if") > 0     : nif% = nif% + 1   : item_add 1,"Ligne : " + right$(string$(4,"0") + str$(i%),4) + "IF"     : end_if
    if instr(a$,t$) > 0       : nth% = nth% + 1   : item_add 1,"Ligne : " + right$(string$(4,"0") + str$(i%),4) + "THEN"   : end_if
    if instr(a$,"end_if") > 0 : nend% = nend% + 1 : item_add 1,"Ligne : " + right$(string$(4,"0") + str$(i%),4) + "END_IF" : end_if
next i%


Edit : la structure  IF ... end_IF est correcte.
Je pense donc au bug : la (sous) chaîne de 4 lettres t,h,e,n dans cet ordre est reconnue comme s'il s'agissait de la commande then !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Marc37



Nombre de messages : 381
Age : 56
Localisation : TOURS
Date d'inscription : 18/03/2014

MessageSujet: Re: Panoramic Editor a fumé la moquette...   Sam 10 Oct 2015 - 19:48

Mea culpa : je n'avais pas vu l'absence des THEN, d'où cette incompréhension !

Quant à Papydall, chapeau bas !

Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Laurent (Minibug)

avatar

Nombre de messages : 2059
Localisation : Vienne (86) - FRANCE
Date d'inscription : 10/02/2012

MessageSujet: Re: Panoramic Editor a fumé la moquette...   Sam 10 Oct 2015 - 19:51

Cela a déjà été soulevé mais Jack n'a visiblement pas corrigé !

Peut être que le problème est difficile a localiser et éliminer.
Le mieux comme dit Papydall est d'utiliser des variables pour stocker des chaines ressemblant aux mots clé et d'éviter les variables correspondant aux mots clé comme then% , if$ , etc...


Dernière édition par Minibug le Sam 10 Oct 2015 - 19:53, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 7304
Age : 45
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Sam 10 Oct 2015 - 19:53

Merci Papydall.

Ton analyse est la bonne.
Laughing

Ps: Pourquoi ces problèmes de if ou end_if en trop arrivent toujours après la 3600 ème ligne de code ?
scratch Suspect Rolling Eyes
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Laurent (Minibug)

avatar

Nombre de messages : 2059
Localisation : Vienne (86) - FRANCE
Date d'inscription : 10/02/2012

MessageSujet: Re: Panoramic Editor a fumé la moquette...   Sam 10 Oct 2015 - 19:58

C'est vrai comme l'avait soulevé Cosmos (je crois), cela se produit souvent sur des gros programmes.

je suis moi même régulièrement confronté a des cas de figure identique ou tout fonctionnait avant.
Et en rajoutant juste quelques lignes sans importance on se retrouve avec des problèmes là ou il n'y en avait pas avant.

C'est assez pénible, et du coup difficile a déboguer. What a Face
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 5256
Age : 66
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Panoramic Editor a fumé la moquette...   Sam 10 Oct 2015 - 20:00

ygeronimi a écrit:
Ps: Pourquoi ces problèmes de if ou end_if en trop arrivent toujours après la 3600 ème ligne de code ?

C’est juste pour t’ennuyer et pour que Papydall fasse travailler ce qu’il lui reste comme neurones. Smile
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Jean Claude

avatar

Nombre de messages : 4681
Age : 62
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: Re: Panoramic Editor a fumé la moquette...   Sam 10 Oct 2015 - 20:31

Cette histoire de 3600 lignes je n'y crois pas trop.
J'ai un programme de 7865 lignes qui tourne très bien et il est bourré de IF/THEN....

A+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

Nombre de messages : 9646
Age : 67
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Panoramic Editor a fumé la moquette...   Sam 10 Oct 2015 - 20:44


Il ne faut pas laisser le mot-clé "alors" tel quel, entre guillemets. Essaie comme ceci:
Code:
dim i%,a$,nif%,nend%,nth%

height 0,650
width 0,1200

memo 1
full_space 1
bar_both 1

dlist 2
file_load 2,"C:\Users\Yannick\Desktop\PLM_Site_Créator\PLM_SIte_creator.bas"

for i%=1 to count(2)
  a$=lower$(item_read$(2,i%))
  if instr(a$,"t"+"hen")>0
      nth%=nth%+1
      item_add 1,"Ligne : "+right$(string$(4,"0")+str$(i%),4)+" T"+"HEN"
  end_if
next i%

item_add 1,str$(nif%)
item_add 1,str$(nth%)
item_add 1,str$(nend%)

end

Le mieux serait, comme le dir Paoydall, de créer une variable then$ et de faire then$ = "t" ° "hen". Plus de proiblème. Mais je suis d'accord avec toi: c'est un bug dand Panoramic_Editor, dans sa phase préliminaire où il cherche entre autres les IF..THEN..ELSE, avant de commencer l'interprétation.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Yannick

avatar

Nombre de messages : 7304
Age : 45
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Sam 10 Oct 2015 - 21:38

Le pire est que le problème est apparu alors les quelques lignes que je venais d' ajouter
ne contenait pas de "if...end_if" et que cela fonctionnait très bien avant  Suspect.

@ Jack,

En dehors de ce souci, il serait bien que l' endroit soit cerné.
Lignes x à y par exemple.

Bon, aller, je me lance à la recherche du "end_if" perdu... Laughing
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Invité
Invité



MessageSujet: Re: Panoramic Editor a fumé la moquette...   Dim 11 Oct 2015 - 0:59

Si tu dois rechercher dans tout ton programme, tu peux peut-être essayer celui-ci, pour voir où peut se trouver l'erreur.

Dernièrement j'ai apporté une modification à ce programme, mais je ne sais plus où je l'ai sauvegardé, car j'ai différentes copies. Il y a parfois une erreur si il y a trop de end_if par rapport aux if, et il se trouve un problème de décompte en arrière. Généralement ça marche, et m'a sauvé la mise plus d'une fois.
Code:
' RETROUVER les boucles if

label coller , ouvrir , depile , ligne ,saut , label , return
dim ouv$,fer$,sinon$,alor$ ,f$
dim separ$, explode%, copie$, v_explode%, mot$(1000), nb_coord% ,g% , mn$ ,l% ,lig$ , sp% , d$ , d% ,saut$
dim a%,a$,m$,b%,b$ ,li%(10000,2) ,c$
ouv$="IF " :fer$="END_IF" : sinon$="ELSE" :alor$=" THEN "

' choix de memo, vu qu'il est le seul qui puisse recevoir le presse-paier
memo   1:left 1,screen_x -width(0)-10:top 1,10:width 1,width(0)-20:height 1,height(0)-130 :bar_both 1 : hide 1

button 2:left 2, 10:width 2,60:caption 2,"coller" :on_click 2,coller
button 3:left 3,100:width 3,60:caption 3,"ouvrir" :on_click 3,ouvrir
open_dialog 5
list   6:top 6,40:height 6,height(0)-100:width 6,400 :font_name 6,"Courier New" : hide 6
dlist 10:' left 10,620:top 10,:width 10,300
alpha  8:top 8,height(1)+70:left 8,620
END
coller:
    clipboard_paste 1 :gosub depile
return
ouvrir:
    filter 5,"Choisir le fichier|*.bas;*.bak;*.txt"
    f$=file_name$(5)
    if f$ <> "_" then file_load 1,f$

' ---------------------------------'
depile:
    ' g%: guillemet
    g%= 0  : sp% = 1
    if count(1)>0
        for a%=1 to count(1)
            caption 0,str$(a%) +" / "+str$(count(1))
            a$= item_read$(1,a%) : m$ = trim$(upper$(a$)) :g%=0 :clear 10 :l%=0 :c$=""
            if left$(m$,2)="' " or left$(m$,4) = "REM "
            else
             for b%=1 to len(m$)
                b$=mid$(m$,b%,1)
                if b$=chr$(34) then g%=-1-g%
                if b$=":" and g%=0
                    item_add 10,trim$(c$) : c$=""
                    mn$=trim$(mid$(m$,b%+1,len(m$)))
                    if left$(mn$,2)="' "  or left$(mn$,4)="REM " then c$="":exit_for
                    if c$ <> "" then item_add 10,trim$(c$)
                else
                    c$=c$+b$
                end_if
             next b%
             item_add 10,trim$(c$)
            
            end_if
            if scancode=27 then exit_for
            
            if count(10)>0
                ' on commence à regarder les boucles /if/
                for b%=1 to count(10)
                    ' on peut prendre a$, on a fini la ligne
                    a$ = item_read$(10,b%)
                   ' caption 8,a$
                    b$ =""
                    if left$(a$,3) = ouv$ and instr(a$,alor$) > 0  :' "/if et then"
                        b$="<**IF/THEN**>  "
                        gosub ligne  
                    else
                        ' if sans then
                        if left$(a$,3) = ouv$
                            gosub ligne
                            sp%=sp% + 1
                        end_if
                    end_if
                    ' ligne avec else
                    if left$(a$,4) = sinon$
                        sp%=sp%-1
                        gosub ligne
                        sp% = sp% +1
                    end_if
                    ' ligne avec end_if
                    if left$(a$,6) = fer$
                        sp%=sp%-1
                        gosub ligne
                        gosub saut
                    end_if
                    if left$(a$,6) = "RETURN" then b$=">>> " :gosub ligne:gosub return
                    if right$(item_read$(1,a%),1) = ":" then gosub label :exit_for
                next b%
            end_if
           ' display
        next a%
        show 6 :full_space 0:full_space 6
    end_if
return

ligne:
   d$="" : for d%=1 to sp%:d$=d$+"|   ":next d%
   if sp% <1  then d$=""
   lig$ = right$("     "+str$(a%),5)
   item_add 6,lig$ + d$ + b$ + trim$(item_read$(1,a%))
return
return:
d$="":for d%=1 to sp%:d$=d$+"|...":next d%
item_add 6,"....." + d$ + STRING$(70,".") +" Ligne RETURN ......"
return
label:
item_add 6,"LABEL ===>" + trim$(item_read$(1,a%))
item_add 6,"**********" + STRING$( len( trim$(item_read$(1,a%))),"*")
return
saut:
d$="":for d%=1 to sp%:d$=d$+"|   ":next d%
item_add 6,"     " + d$
return
Je fais vite, j'ai autre chose à faire.
Revenir en haut Aller en bas
Yannick

avatar

Nombre de messages : 7304
Age : 45
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Dim 11 Oct 2015 - 3:23

Ton programme est très intéressant Cosmos70,
Il y a des chances que je trouve mon souci grâce à lui.

Merci pour ce partage.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 7304
Age : 45
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Dim 11 Oct 2015 - 3:32

@ Cosmos70,

Ton programme m' a sauvé la mise !
Il mérite d' être développé.

Encore Merci.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Laurent (Minibug)

avatar

Nombre de messages : 2059
Localisation : Vienne (86) - FRANCE
Date d'inscription : 10/02/2012

MessageSujet: Re: Panoramic Editor a fumé la moquette...   Dim 11 Oct 2015 - 9:08

Effectivement, merci pour le partage Cosmos Wink
Très pratique.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Invité
Invité



MessageSujet: Re: Panoramic Editor a fumé la moquette...   Dim 11 Oct 2015 - 9:32

Content que c'est pu servir. Ce programme je l'ai publié en son temps, mais ça va plus vite de le copier que de le rechercher.

Maintenant ce programme date. Je ne pense pas qu'il remette les compteurs à zéro lorsqu'il rencontre une sub, car les conditions dont le départ et dans une sub ou un sous-programme, doivent être fermées en sortie. Il faut aussi qu'une condition qui est hors des sub, car on peut très bien avoir ce cas, être pris en compte. Ensuite je fais les commandes en ligne: IF ... THEN : ELSE :
Alors que Ygeronimi procède ainsi: IF : ELSE : END_IF, et je ne sais pas ce que cela donne en résultat.

Je ne peux le reprendre dans un temps proche, et si quelqu'un veut si coller, je reprendrai volontiers celui-ci.

A noter ce post, je l'avais déjà signalé en son temps pour les mêmes raisons.
Revenir en haut Aller en bas
Laurent (Minibug)

avatar

Nombre de messages : 2059
Localisation : Vienne (86) - FRANCE
Date d'inscription : 10/02/2012

MessageSujet: Re: Panoramic Editor a fumé la moquette...   Dim 11 Oct 2015 - 11:52

Effectivement, Je l'avais déjà récupéré.
J'ai la date du fichier : juillet 2012
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 7304
Age : 45
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Dim 11 Oct 2015 - 12:24

Personellement, j' ai pris le pli de créer mes programmes par modules de sub  Suspect 
et avec plusieurs fichiers par thème. Vous avez du le constater d' ailleurs.

ex:

Fichier thème variables = VAR.bas 

puis

SUB Variables_objets()
END_SUB

SUB Variables_application()
END_SUB

etc...

Ceci me permettrait une recherche par bloc ou sub/sub
si un défaut entre le nombre de if et de end_if est détecté dans le bloc on signale la sub fautive.
le tout est d' avoir une bonne détection.

dans le cas présent, l' erreur est venu d' un retour chariot accidentel et pas d' un défaut de nombre entre les if et end_if
d' où l' importance de visualiser les blocs de ces deux là comme le fait très bien le programme de cosmos.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Panoramic Editor a fumé la moquette...   

Revenir en haut Aller en bas
 
Panoramic Editor a fumé la moquette...
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Personnal Panoramic Editor
» panoramic - Editor
» commande menu "Enregistrer"
» Générateur / editeur de donjon (les débuts)
» Problème de compatibilté de panoramic-editor

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC 32 bits :: Présentation et bavardage-
Sauter vers: