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
» Gestionnaire de Projets Panoramic
par Minibug Aujourd'hui à 2:10

» Mah-Jong européen new-look
par jjn4 Hier à 16:35

» Button_picture
par pascal10000 Hier à 11:41

» Pourquoi le compilateur stagne
par Minibug Hier à 11:09

» 4 (en analyse): SYNEDIT_TARGET_IS_OBJECT devient inactif
par Jack Hier à 10:09

» 3 (en analyse): Mauvaise interprétation du string "THEN"
par Jack Hier à 10:03

» KGF.dll - demandes ou suggestions de modifications ou ajouts
par Marc Hier à 10:00

» KGF_dll - nouvelles versions
par pascal10000 Mer 13 Déc 2017 - 17:27

» track_bar circulaire
par Klaus Mar 12 Déc 2017 - 13:54

» API Windows
par Klaus Mar 12 Déc 2017 - 3:21

» Cartes de voeux, menus, etc.
par JL35 Lun 11 Déc 2017 - 17:48

» a l'aide klaus
par Minibug Lun 11 Déc 2017 - 11:42

» bug SYNEDIT_TARGET_IS_OBJECT
par Jack Lun 11 Déc 2017 - 0:16

» Jukebox : Serge Reggiani
par papydall Sam 9 Déc 2017 - 5:58

» Ecouter la radio fm sur votre pc
par pascal10000 Sam 9 Déc 2017 - 3:42

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Décembre 2017
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
25262728293031
CalendrierCalendrier

Partagez | 
 

 pourquoi ces erreurs ?

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



Nombre de messages : 184
Age : 75
Localisation : charente maritime
Date d'inscription : 29/12/2008

MessageSujet: pourquoi ces erreurs ?   Ven 19 Sep 2014 - 11:52


bonjour a tous.
pourquoi j'ai ces erreurs?.

1- nom de sub incorrect ligne 83
2- label non déclaré ligne 94

si j'enlève les rems des lignes 3,4,5,6,7,8,10 et que je passe les subs en rem ,je n'ai pas l'erreur "nom de sub incorrect"
et pourquoi label non déclaré ligne 94 alors qu'il y est ?.

et je vais en profiter pour demander si il n'y a pas une autre solutionque de passer par des labels
(on_key_up,label pour remplir mes 5 edits sans passer par un button "validation "a chaque fois

error_french

'  dim i%
'  dim nc% : nc%=5
'  dim a% : a%=100
'  dim ch%
'  dim part%(5,1)
'  dim pts%
 
'  label f1 ,f2,f3,f4 ,f5 ,fin

variables()
labels()

for i%= 1 to nc%
 edit i% : top i%,200 : left i%,a% : width i%,20
 a%=a%+35
next i%

set_focus 1
on_key_up 1,f1

end

f1:
pts%=10
if key_up_code=13
 if numeric(text$(1))=0 then return
    ch%=val(text$(1))
    part%(ch%,0)=ch%
    part%(ch%,1)=part%(ch%,1)+pts%
    set_focus 2
    on_key_up 2,f2
end_if

f2:
' pts%=10
if key_up_code=13
 if numeric(text$(2))=0 then return
   ch%=val(text$(2))
     part%(ch%,0)=ch%
     part%(ch%,1)=part%(ch%,1)+pts%
     set_focus 3
     on_key_up 3,f3
end_if

f3:
' pts%=10
if key_up_code=13
  if numeric(text$(3))=0 then return
   ch%=val(text$(3))
     part%(ch%,0)=ch%
     part%(ch%,1)=part%(ch%,1)+pts%
     set_focus 4
     on_key_up 4,f4
end_if

f4:
' pts%=10
if key_up_code=13
   if numeric(text$(4))=0 then return
   ch%=val(text$(4))
     part%(ch%,0)=ch%
     part%(ch%,1)=part%(ch%,1)+pts%
     set_focus 5
     on_key_up 5,f5
end_if

f5:
pts%=25
if key_up_code=13
   if numeric(text$(5))=0 then return
   ch%=val(text$(5))
     part%(ch%,0)=ch%
     part%(ch%,1)=part%(ch%,1)+pts%
'      set_focus 6
'      on_key_up 6,f6
end_if

print part%(5,1)  :' pour verif du 5em edit
fin:' pour l'instant
' ============= les variables ===============
sub variables()
 dim i%
 dim nc% : nc%=5
 dim a% : a%=100
 dim ch%
 dim part%(5,1)
 dim pts%
end_sub
' ============= les labels ================
sub labels()
 label f1,f2,f3,f4,f5
 label fin
end_sub

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

avatar

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

MessageSujet: Re: pourquoi ces erreurs ?   Ven 19 Sep 2014 - 12:02

Tu fais 2 petites erreurs:
1. tu ne peux pas mettre un commentaire après un label. Un label doit être seul sur la ligne. Place le commentaire sur la ligne au-dessus ou en-dessous.
2. après ton label "fin", tu continues l'exécution en tombant sur la commande SUB. Ceci produira un plantage, car c'est une définition et non un code exécutable. Place un END (ou tout autre moyen pour dériver l'exécution) devant la commande SUB.

De manière générale, il convient de placer toutes les SUB en fin de programme, et de veiller à ce que l'exécution du code au-dessus ne puisse pas passer séquentiellement sur une définition de SUB.

Voici ton code corrigé:
Code:
error_french

'  dim i%
'  dim nc% : nc%=5
'  dim a% : a%=100
'  dim ch%
'  dim part%(5,1)
'  dim pts%

'  label f1 ,f2,f3,f4 ,f5 ,fin

variables()
labels()

for i%= 1 to nc%
 edit i% : top i%,200 : left i%,a% : width i%,20
 a%=a%+35
next i%

set_focus 1
on_key_up 1,f1

end

f1:
pts%=10
if key_up_code=13
 if numeric(text$(1))=0 then return
    ch%=val(text$(1))
    part%(ch%,0)=ch%
    part%(ch%,1)=part%(ch%,1)+pts%
    set_focus 2
    on_key_up 2,f2
end_if

f2:
' pts%=10
if key_up_code=13
 if numeric(text$(2))=0 then return
  ch%=val(text$(2))
    part%(ch%,0)=ch%
    part%(ch%,1)=part%(ch%,1)+pts%
    set_focus 3
    on_key_up 3,f3
end_if

f3:
' pts%=10
if key_up_code=13
  if numeric(text$(3))=0 then return
  ch%=val(text$(3))
    part%(ch%,0)=ch%
    part%(ch%,1)=part%(ch%,1)+pts%
    set_focus 4
    on_key_up 4,f4
end_if

f4:
' pts%=10
if key_up_code=13
  if numeric(text$(4))=0 then return
  ch%=val(text$(4))
    part%(ch%,0)=ch%
    part%(ch%,1)=part%(ch%,1)+pts%
    set_focus 5
    on_key_up 5,f5
end_if

f5:
pts%=25
if key_up_code=13
  if numeric(text$(5))=0 then return
  ch%=val(text$(5))
    part%(ch%,0)=ch%
    part%(ch%,1)=part%(ch%,1)+pts%
'      set_focus 6
'      on_key_up 6,f6
end_if

print part%(5,1)  :' pour verif du 5em edit
 ' pour l'instant      : ' <=========
fin:                    : ' <=========
end                    : ' <=========

' ============= les variables ===============
sub variables()
 dim i%
 dim nc% : nc%=5
 dim a% : a%=100
 dim ch%
 dim part%(5,1)
 dim pts%
end_sub
' ============= les labels ================
sub labels()
 label f1,f2,f3,f4,f5
 label fin
end_sub
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
papydall

avatar

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

MessageSujet: Re: pourquoi ces erreurs ?   Ven 19 Sep 2014 - 12:13

Les sous-programmes appelés par ON_XXX … doivent être terminé par l’instruction RETURN.
Dans ton code, ajoute des RETURN aux lignes 33, 44, 55, 66
Ligne 79, enlève tout ce qui est après fin :. Il ne doit y avoir rien sur la même ligne après les deux-points
Ajoute un end avant la déclaration de la SUB


Klaus a été le plus rapide!

EDIT
Pour une meilleure lisibilité de ton code sur le Forum, mets ton code entre les balises [code ]  ... [/ code].
REMARQUE : il ne doit y avoir aucun espace entre les crochets!
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Invité
Invité



MessageSujet: Re: pourquoi ces erreurs ?   Ven 19 Sep 2014 - 12:43

Une autre présentation du code:
Code:
error_french
variables()
labels()

for i%= 1 to nc%
 edit i% : top i%,200 : left i%,a% : width i%,20
 a%=a%+35
 on_key_up i%,f1
next i%

set_focus 1
end
========================================
f1:
pts%=10
if key_up_code=13
 i% = number_key_up
 if numeric(text$(i%))=0 then return
    if i% = 5 then pts%=25 : else : pts% = 10
    ch%=val(text$(i%))
    part%(ch%,0)=ch%
    part%(ch%,1)=part%(ch%,1)+pts%

    if i% = 5
       print part%(5,1)  :' pour verif du 5em edit
    else
       set_focus i%+1
    end_if
end_if
return

' ============= les variables ===============
sub variables()
 dim i%
 dim nc% : nc%=5
 dim a% : a%=100
 dim ch%
 dim part%(5,1)
 dim pts%
end_sub
' ============= les labels ================
sub labels()
 label f1
 label fin
end_sub

fin: :' pour l'instan
Revenir en haut Aller en bas
RMont



Nombre de messages : 184
Age : 75
Localisation : charente maritime
Date d'inscription : 29/12/2008

MessageSujet: Re: pourquoi ces erreurs ?   Ven 19 Sep 2014 - 19:28


merci à vous pour vos réponses.
au départ, je n'avais que "nom de sub incorrect" ,c'est pourquoi j'ai mis ce label fin en pensant arreter ce code.
je constate qu'il est possible de mettre au moins 2 end dans un code et pour finir ,je dirai qu'il y a longtemps que je n'avais pas mis de code sur le forum et,je me suis aperçu trop tard que je ne l'avais pas mis entre les balises "code"
je vais pouvoir continuer en essayant les différentes méthodes
encore merci
Rmont

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

avatar

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

MessageSujet: Re: pourquoi ces erreurs ?   Ven 19 Sep 2014 - 19:42

Salut RMont.

RMont a écrit:
je constate qu'il est possible de mettre au moins 2 end dans un code

Tu peux en mettre tant que tu voudras! des milliers mêmes ! Mais bon, restons raisonnables !
Saches que la commande END a pour unique rôle d’arrêter l’exécution du programme principal mais le programme reste actif et continue de traiter les événements.
Donc on met un END là où l’on veut que le programme n’aille pas au-delà.

EDIT :
Pour arrêter définitivement l'exécution du programme et libérer la mémoire, on utilise la commande TERMINATE. Tous les objets sont détruits. Le programme n'existe plus en mémoire.


Dernière édition par papydall le Ven 19 Sep 2014 - 20:07, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
RMont



Nombre de messages : 184
Age : 75
Localisation : charente maritime
Date d'inscription : 29/12/2008

MessageSujet: Re: pourquoi ces erreurs ?   Ven 19 Sep 2014 - 19:50


@ cosmos.
ta façon de faire me fais entrevoir des belles possibilités.
j'ai fais un code de 1000 lignes environ mais avec beaucoup de répétitions de portions de code identiques mais a chaque fois avec des labels différents.
donc je vais réécrire mon code
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

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

MessageSujet: Re: pourquoi ces erreurs ?   Ven 19 Sep 2014 - 19:58

N’hésite surtout pas à poster ton code (si ce n’est pas top secret ! Laughing ) et à poser toute sorte de question sur laquelle tu butes.
Certainement, tu auras des retours et c’est ainsi que le savoir commun s’enrichit.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Invité
Invité



MessageSujet: Re: pourquoi ces erreurs ?   Ven 19 Sep 2014 - 20:46

Ok Rmont, pas de problèmes.

Papydall a écrit:
Tu peux en mettre tant que tu voudras! des milliers mêmes ! Mais bon, restons raisonnables !

C'est oui et non. Le End pourrait être mis à la place de RETURN, ce là fonctionne un certain temps, mais dans le cas présent, ou une touche appelle un sous-programme, il y a une accumulation de la pile sans la vider.

Je crois qu'on a droit à une pile de 1000 appels si je me souviens bien. Alors imagine d'écrire un texte avec on_key_up à chaque touche, tu seras vite bloqué. Le return dépile l'appel qui a été fait.

Je me suis souvent servi il y a un temps de END pour stopper un programme. C'était lorsque j'ouvrais une form pour pouvoir répondre à une question, et pour stopper le programme je mettais END, je répondais au message, et je reprenais là où j'en étais resté.

Mais avec les commandes qui ont étaient rajoutées, je ne me souviens depuis d'avoir eu besoin d'utiliser ce principe.

Je viens de me relire, cela semble à du chinois, mais je me dois de ne pas être parfait, d'un coup je me rappel d'un oubli.
Revenir en haut Aller en bas
Jean Claude

avatar

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

MessageSujet: Re: pourquoi ces erreurs ?   Ven 19 Sep 2014 - 21:56

Je suis plutôt d'accord avec toi Cosmos,

Pour respecter le basic Panoramic, il est préférable de faire suivre tous label par return.
C'est juste une bonne habitude à prendre.

Code:
Label start,fin
gosub start
END
start:
print " comme je n'ai rien à écrire, j'arrête là "
wait 5000
gosub fin
return

fin:
terminate
return
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Invité
Invité



MessageSujet: Re: pourquoi ces erreurs ?   Sam 20 Sep 2014 - 0:09

Tout à l'heure, j'ai du retirer le reste du post que je n'ai pu developper par un imprévu.

Il faut dire qu'il y a Panoramic aujourd'hui et celui d'hier. Rappelles-toi Jean-Claude! En 2008 et 2009, on avait de gros problème pour pouvoir entrer des données. On ne savait pas comment faire pour stopper le programme et pouvoir répondre à des questions. Input ne convenait vraiment pas, et on était encore emprunt du basic ancestral. On avait pas vraiment d'expériences et on manquait d'un certain nombres d'instructions. Le END dans un programme m'avait permit de réussir ce tour de force.

Maintenant un sous-programme est un sous-programme et se termine par RETURN. Par contre il faudrait vérifier et je pense que je connais la réponse, pour voir si le dernier sous-programme qui ne nécessite pas  de return pour fonctionner, n'est pas considéré comme un END. On n'a pas d'erreur d'exécution dans ce cas-là, mais pour moi RETURN est obligatoire. Je pense que si le programme se prolonge, on peut avoir un débordement de pile.

En tout cas dans l'absolu, et seulement si ce n'est pas pour arrêter un sous-programme , on peut mettre END à plein d'endroit comme dit Papydall.
Revenir en haut Aller en bas
papydall

avatar

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

MessageSujet: Re: pourquoi ces erreurs ?   Sam 20 Sep 2014 - 2:20

J’aime bien éclaircir quelque chose : je n’ai jamais dit qu’un END remplace un RETURN.
J’ai bien écrit :
Citation :
Les sous-programmes appelés par ON_XXX … doivent être terminé par l’instruction RETURN.
Dans ton code, ajoute des RETURN aux lignes 33, 44, 55, 66

En effet, le RETURN qui indique la fin d’un sous-programme est une instruction qui sert à récupérer l’adresse de retour à l’endroit à partir duquel le sous-programme a été appelé.
En absence de RETURN, la pile risque de déborder.
Il est à rappeler que la pile est une zone de la mémoire servant, entre autres, à stoker les adresses de retours  de sous-programmes.

Par contre, un même programme peut contenir, non pas un seul END mais autant que nécessaire.
C’était en réponse à RMont qui a constaté que j’ai utilisé 2 end
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Invité
Invité



MessageSujet: Re: pourquoi ces erreurs ?   Sam 20 Sep 2014 - 6:40

J'ai jamais pensé que tu voulais dire qu'on pouvait mettre un end à la place d'un return. Mais un moment on aurait pu le penser.

Je voulais juste éclaircir ce point. Mais ma première intervention, je l'ai tronqué en retirant la suite qui n'était pas fini pour un imprévu que j'ai du traiter, et je suis parti.

J'étais intervenu au départ pour mettre un exemple d'utilisation du END, et je me suis abstenu. C'est moi qui suis en cause, et pour cela, tu te sens victime de propos mal compris. Je me dis parfois que dans la journée je ne devrais pas intervenir, car régulièrement lorsque je prend le temps de répondre, je dois couper court pour partir.

Revenir en haut Aller en bas
Jean Claude

avatar

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

MessageSujet: Re: pourquoi ces erreurs ?   Sam 20 Sep 2014 - 10:31

@Papydall,
Rassure-toi, je n'ai pas, non plus, lu que tu avais dit que l'on pouvait remplacer return par end. Je suis intervenu uniquement pour être certain que Rmont ne l'ai pas interprété comme tel.

Cosmos a écrit:
Rappelles-toi Jean-Claude! En 2008 et 2009, on avait de gros problème pour pouvoir entrer des données. On ne savait pas comment faire pour stopper le programme et pouvoir répondre à des questions. Input ne convenait vraiment pas, et on était encore emprunt du basic ancestral. On avait pas vraiment d'expériences et on manquait d'un certain nombres d'instructions.

En 2008, je n'était pas là, mais c'est très vrai que nous avons évolués depuis cette époque. Et Panoramic aussi. Preuve, qu'en s'accrochant un peu-beaucoup, on peut faire bien des choses avec Panoramic.

Bonne journée à tous.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Invité
Invité



MessageSujet: Re: pourquoi ces erreurs ?   Sam 20 Sep 2014 - 13:16

Jean-Claude a écrit:
En 2008, je n'était pas là,

Cela m'a interpellé. Il me semblait bien que tu étais là avant moi. Je voulais dire 2009/2010.

@+
Revenir en haut Aller en bas
Jean Claude

avatar

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

MessageSujet: Re: pourquoi ces erreurs ?   Sam 20 Sep 2014 - 14:14

Hé oui, on se croit plus ancien que la réalité,

L'ancêtre c'est JL35 (29/11/2007), du moins, de ceux qui participent toujours. Very Happy geek
Un, des Artisans du début, qui ont, comme nous, essuyés les plâtres.

lol!
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Froggy One

avatar

Nombre de messages : 395
Date d'inscription : 06/01/2012

MessageSujet: Re   Mar 23 Sep 2014 - 9:48

Génial, ce post des "anciens" ! on y apprend plein de choses ! je parviens à peine au niveau où j'arrive à comprendre ce que les autres ont bien voulu développer grâce à leurs codes alors ce petit moment de LABEL vaut son pesant de cacahuètes ! Bonne journée !!!
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://gaeldwest.wordpress.com
Contenu sponsorisé




MessageSujet: Re: pourquoi ces erreurs ?   

Revenir en haut Aller en bas
 
pourquoi ces erreurs ?
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Pourquoi ça ne bouge plus
» pourquoi nous ne pouvons pas répondre au sujet
» Problème: pourquoi Base C. crée t-il une nouvelle version à chaque chargement de fichier .gpx
» Pourquoi j'ai choisi WordPress
» ERREURS FEC et PB DECLARE DANS ESPACE CLIENT

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: A l'aide!-
Sauter vers: