FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Logiciel de planétarium.
problème avec les appels Gosub Emptypar Jack Aujourd'hui à 10:03

» Un autre pense-bête...
problème avec les appels Gosub Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
problème avec les appels Gosub Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
problème avec les appels Gosub Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
problème avec les appels Gosub Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
problème avec les appels Gosub Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
problème avec les appels Gosub Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
problème avec les appels Gosub Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
problème avec les appels Gosub Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
problème avec les appels Gosub Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
problème avec les appels Gosub Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
problème avec les appels Gosub Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
problème avec les appels Gosub Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
problème avec les appels Gosub Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
problème avec les appels Gosub Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
-55%
Le deal à ne pas rater :
Friteuse sans huile – PHILIPS – Airfryer HD9200/90 Série 3000
49.99 € 109.99 €
Voir le deal

 

 problème avec les appels Gosub

Aller en bas 
3 participants
AuteurMessage
Vaillant17




Nombre de messages : 34
Age : 75
Localisation : Charente_Maritime
Date d'inscription : 03/06/2008

problème avec les appels Gosub Empty
MessageSujet: problème avec les appels Gosub   problème avec les appels Gosub EmptyVen 11 Juil 2008 - 13:25

bonjour à tous.
Je rencontre un problème avec l'appel de sous-routine (Gosub - Return)
Bien sur j'ai effectué pas mal d'essai, mais je n'ai pas résolue le problème.

A partir d'un clique sur un objet, je me dirige normalement vers une s-routine. Pas de problème. Cependant, lorsque cette s-routine renvoie vers une autre, je ne peux effectuer que 5 appels de la 1ère routine? j'ai alors le message suivant : " Too Many Nested Gosub line xxx qui fait référence à l'appel de la seconde routine.....

Exemple simplifié :

Code:
001 REM *************************************
002
003 label premiere_s_routine
004 label deuxieme_s_routine
005
006 button 1
007 on_click 1, premiere_s_routine
008 end
009 REM *************************************
010
011 premiere_s_routine:
012
013        gosub deuxieme_s_routine
014
015 return
016
017 deuxieme_s_routine:
018        print "coucou"
019 return
Après 5 appels de " première_s_routine "

j'ai le message " Too Many Nested Gosub line 013 "

quand est-il. scratch
Revenir en haut Aller en bas
http://lesanneesvaillant.fr
JL35




Nombre de messages : 7112
Localisation : 77
Date d'inscription : 29/11/2007

problème avec les appels Gosub Empty
MessageSujet: Re: problème avec les appels Gosub   problème avec les appels Gosub EmptyVen 11 Juil 2008 - 14:34

Il s'agit d'une des limitations volontaires de la version d'essai. Voir le manuel de référence:
Citation :
18 - VERSION FREEWARE (GRATICIEL)

Dans cette version freeware de PANORAMIC, toutes les fonctionnalités sont actives, mais il y a quelques limitations:

- Nombre d'objets système: 35
- Nombre d'objets 3D: 25
- Nombre d'objets SPRITE: 20
- Nombre de variables utilisateur: 40
- Nombre de labels: 40
- Nombre de IF / END_IF: 40
- Nombre de WHILE / END_WHILE: 40
- Nombre de REPEAT / UNTIL: 40
- Taille maximale de tableau de variable: 200
- Nombre de fichiers texte ouverts simultanément: 5
- Nombre de fichiers EXCEL utilisés simultanément: 2
- Profondeur de boucles "FOR" emboîtées: 10
- Profondeur de GOSUB emboîtés: 5
Revenir en haut Aller en bas
Vaillant17




Nombre de messages : 34
Age : 75
Localisation : Charente_Maritime
Date d'inscription : 03/06/2008

problème avec les appels Gosub Empty
MessageSujet: Re: problème avec les appels Gosub   problème avec les appels Gosub EmptyVen 11 Juil 2008 - 17:24

Merci JL35, j'avais vu cette limitation. Mais dans mon cas ci-dessus, il s'agit, si j'ai bien compris, non pas d'emboitement, mais d'appel.
Je pense que l'emboitement consiste à ce qu'il y ait un empillage de 5 Gosub
du genre

Code:
  gosub A1

a1: 
  gosub A2
return

A2:
 gosub A3
return


A3:
  gosub A4

return

A4:
 
 
return
????? Embarassed
Revenir en haut Aller en bas
http://lesanneesvaillant.fr
JL35




Nombre de messages : 7112
Localisation : 77
Date d'inscription : 29/11/2007

problème avec les appels Gosub Empty
MessageSujet: Re: problème avec les appels Gosub   problème avec les appels Gosub EmptyVen 11 Juil 2008 - 17:43

Ton code n'est pas très clair, mais il semble que tes sous-programmes soient imbriqués l'un dans l'autre, c'est à dire qu'on appelle un deuxième sous-programme depuis l'intérieur d'un premier, et ainsi de suite, et qu'on arrive à la limite d'imbrication de 5.
C'est à dire qu'on lance un 6ème GOSUB alors qu'il y a déjà 5 RETURN en suspens...
Enfin, à première vue...

Edit: tel qu'il est, ton code devrait marcher, s'il n'y a qu'un appel et retour de sous-programme à l'intérieur d'un autre...
Je vais essayer, pour voir si je peux reproduire ce que tu constates.

ReEdit: eh bien bravo Vaillant, je crois bien que tu as mis le doigt sur une belle anomalie ! si on déroule le code suivant (quasiment identique au tien):
Code:
label sp1
label sp2
dim cpt1, cpt2
cpt1 = 0: cpt2 = 0
button 1: left 1, 200
caption 1,"Cliquez"
on_click 1, sp1
end

sp1:
print "cpt1="+str$(cpt1)+" cpt2="+str$(cpt2)
cpt1 = cpt1 + 1
print "Entrée dans le s/p 1"
gosub sp2
print "retour du 2ème s/p": rem on ne passe jamais ici
cpt1 = cpt1 - 1
return

sp2:
cpt2 = cpt2 + 1
print "s/p 2, appelé par le s/p 1"
cpt2 = cpt2 - 1
return
on s'aperçoit que le return du sp2 revient directement sur le end, on ne repasse jamais sur le RETURN du sp1 et le compteur cpt1 continue à s'incrémenter, et au bout de 5 fois, patatras ! ça plante.
Il n'y a plus qu'à soumettre ça à la sagacité du grand maître.
Revenir en haut Aller en bas
Vaillant17




Nombre de messages : 34
Age : 75
Localisation : Charente_Maritime
Date d'inscription : 03/06/2008

problème avec les appels Gosub Empty
MessageSujet: Re: problème avec les appels Gosub   problème avec les appels Gosub EmptyVen 11 Juil 2008 - 18:27

encore merci JL35.

C'est pas toujours facile de s'expliquer, mais tu a parfaitement compris le hic.

En effet, j'ai commencéà programmer une base de données pour une Bande Dessinées anciennes (Free). La première partie de ce programme a été développée l'an dernier, sous RapidQ. Ayant découvert Panoramic et ayant été emballé, j'en ai profité pour ajouter un deuxième module programmé avec ce langage. Je suis arrivé à résoudre les limitations tels que l'ouverture de fichiers. Mais je bute depuis plusieurs jours sur l'appel de s-routines, qui me sont nécessaires pour éviter les redondances. Et là, si je veux par exemple sauvegarder les saisies en cours, je suis limité à 5 fois....
Et bien sur j'ai le même problème pour d'autres opérations.
Revenir en haut Aller en bas
http://lesanneesvaillant.fr
JL35




Nombre de messages : 7112
Localisation : 77
Date d'inscription : 29/11/2007

problème avec les appels Gosub Empty
MessageSujet: Re: problème avec les appels Gosub   problème avec les appels Gosub EmptyVen 11 Juil 2008 - 21:12

Il y a presque toujours des solutions pour contourner les problèmes, plus ou moins élégantes...
Par exemple tu pourrais intégrer le code de ton deuxième sous-programme en dur dans le premier ? c'est moins modulaire, mais ça pourrait débloquer la situation, en attendant mieux ?
Revenir en haut Aller en bas
Vaillant17




Nombre de messages : 34
Age : 75
Localisation : Charente_Maritime
Date d'inscription : 03/06/2008

problème avec les appels Gosub Empty
MessageSujet: Re: problème avec les appels Gosub   problème avec les appels Gosub EmptyVen 11 Juil 2008 - 22:01

C'est ce que j'ai fait, et ça m'a solutionné un autre problème, tout est bien qui fini bien.

Pour le nombre de fichier ouvert, j'ai résolu le problème de la manière suivante, si ça peut intéressé.... bounce

Si on a plus de 5 fichiers à ouvrir.....?

Et bien, j'en ouvrir 1 en lecture par exemple dans une routine du genre

Code:
sous_routine_lecture:

    if monchoix% = 1 then nom_de_fichier$ = "premier_fichier"
    if monchoix% = 2 then nom_de_fichier$ = "deuxième_fichier"
    if monchoix% = 3 then nom_de_fichier$ = "troisième_fichier"
    if monchoix% = 4 then nom_de_fichier$ = "quatrième_fichier"
    etc..........

    open_file_read 1, nom_de_fichier$

    if monchoix% = 1             
          REM ici les lignes de programmation pour lire "premier_fichier"
    end_if

    if monchoix% = 2
          REM ici les lignes de programmation pour lire "second_fichier"
    end_if

    if monchoix% = 3
          REM ici les lignes de programmation pour lire "troisième_fichier"
    end_if

    if monchoix% = 4
          REM ici les lignes de programmation pour lire "quatrième_fichier"
    end_if

    etc.......

    file_close 1
RETURN

je l'utilise et c'est très efficace.


Il suffit de créer une autre routine pour l'écriture, et le tour est joué.
Sympa non. study
Revenir en haut Aller en bas
http://lesanneesvaillant.fr
JL35




Nombre de messages : 7112
Localisation : 77
Date d'inscription : 29/11/2007

problème avec les appels Gosub Empty
MessageSujet: Re: problème avec les appels Gosub   problème avec les appels Gosub EmptyVen 11 Juil 2008 - 23:34

Une suggestion: plutôt que de multiplier les IF tu pourrais utiliser la structure:
Code:
SELECT CASE monchoix
  CASE 1
      traitement 1
  CASE 2
      traitement 2
  etc...

END SELECT
Revenir en haut Aller en bas
Vaillant17




Nombre de messages : 34
Age : 75
Localisation : Charente_Maritime
Date d'inscription : 03/06/2008

problème avec les appels Gosub Empty
MessageSujet: Re: problème avec les appels Gosub   problème avec les appels Gosub EmptySam 12 Juil 2008 - 11:37

Tu as tout à fait raison JL35.
J'ai repris mon exemple, car dans mon programme, j'ai besoin de passer du choix 1 au choix 3, pour un autre fichier dans la même foulée. Donc, je dois utiliser un Goto sur le label de la routine. Mais c'est vrai est beaucoup plus élégant.

A pluche Laughing
Revenir en haut Aller en bas
http://lesanneesvaillant.fr
Jack
Admin
Jack


Nombre de messages : 2395
Date d'inscription : 28/05/2007

problème avec les appels Gosub Empty
MessageSujet: Re: problème avec les appels Gosub   problème avec les appels Gosub EmptyLun 14 Juil 2008 - 22:00

Citation :
C'est à dire qu'on lance un 6ème GOSUB alors qu'il y a déjà 5 RETURN en suspens...
C'est exactement à ce moment qu'apparait l'erreur qui indique qu'il y a plus de 5 sous-programmes imbriquées.

En examinant l'exemple de JL35 sur les 2 sous-programmes indiqués:
Citation :
print "retour du 2ème s/p": rem on ne passe jamais ici
Eh bien, je suis d'accord, on devrait pourtant exécuter cette ligne.

Si j'exécute ce programme, repris de l'exemple de JL35 et simplifié, on a une erreur manifeste:
Code:
label sp1
label sp2

button 1: left 1, 200
caption 1,"Cliquez"
on_click 1, sp1
end

sp1:
print "Entrée dans le s/p 1"
gosub sp2
print "retour du 2ème s/p": rem on ne passe jamais ici
return

sp2:
print "s/p 2, appelé par le s/p 1"
return

Mais si j'exécute celui-ci, qui a exactement la même structure: (attention il est difficile de terminer son exécution, mais il est donné pour l'exemple)
Code:
label sp1
label sp2
label attendre

button 1: left 1, 200
caption 1,"Cliquez"
attendre:
if clicked(1)=1 then gosub sp1
wait 100:goto attendre
end

sp1:
print "Entrée dans le s/p 1"
gosub sp2
print "retour du 2ème s/p": rem on ne passe jamais ici
return

sp2:
print "s/p 2, appelé par le s/p 1"
return
On n'a pas d'erreur.

Ce qui ne fonctionne pas, c'est le fait d'appeler un sous-programme dans le traitement d'un événement.
En effet, le traitement d'un événement, lorsqu'il arrive à son terme (RETURN), ne renvoie jamais à une ligne de code. Car le traitement des événements est complètement indépendant du programme principal. C'est le principe de la programmation événementielle: on programme ce qui doit arriver lorsqu'un événement arrive sur un objet, et de manière indépendante du reste.

Mais on devrait pouvoir appeler un sous-programme dans un traitement d'événement...
Je n'avais pas prévu ce cas de figure. Je vais y remédier.
Revenir en haut Aller en bas
https://panoramic.1fr1.net
Contenu sponsorisé





problème avec les appels Gosub Empty
MessageSujet: Re: problème avec les appels Gosub   problème avec les appels Gosub Empty

Revenir en haut Aller en bas
 
problème avec les appels Gosub
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Problème avec select case Probleme réglé merci
» problème avec edit ou bien avec combo?
» Problème avec DIM et ADR
» Problème avec KGF.DLL.
» Y-a-t'il un problème avec END?

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Un problème avec PANORAMIC?-
Sauter vers: