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.
Bizarre bizarre Emptypar Pedro Aujourd'hui à 10:37

» Un autre pense-bête...
Bizarre bizarre Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Bizarre bizarre Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Bizarre bizarre Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Bizarre bizarre Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Bizarre bizarre Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Bizarre bizarre Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Bizarre bizarre Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Bizarre bizarre Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Bizarre bizarre Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Bizarre bizarre Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Bizarre bizarre Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Bizarre bizarre Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Bizarre bizarre Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Bizarre bizarre 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
Le Deal du moment : -20%
Drone Dji DJI Mini 4K (EU)
Voir le deal
239 €

 

 Bizarre bizarre

Aller en bas 
4 participants
AuteurMessage
jjn4

jjn4


Nombre de messages : 2747
Date d'inscription : 13/09/2009

Bizarre bizarre Empty
MessageSujet: Bizarre bizarre   Bizarre bizarre EmptyJeu 25 Aoû 2022 - 20:23

Salut les panoramiciens !
Bon, je vois c'est le temps des vacances !
(d'ailleurs, j'avoue que j'y suis toujours moi-même)
Mais apparemment, il y en a d'encore fidèle au poste !
king
Mais même en vacances, je fais encore de la programmation !
Et j'ai eu une erreur bizarre, que je n'avais jamais vue,
(alors qu'il n'y avait qu'une pendule en panoramic, qui marchait)
 study
Voici cette étrange erreur :
Too much nested GOSUB or EVENTS (more than 1000)
Je me demande à quoi ça correspond ?????????
scratch
Je ne sais pas si quelqu'un connaît la réponse à cette question ????
flower
Revenir en haut Aller en bas
http://jjn4.e-monsite.com
Jack
Admin
Jack


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

Bizarre bizarre Empty
MessageSujet: Re: Bizarre bizarre   Bizarre bizarre EmptyJeu 25 Aoû 2022 - 21:24

Cette erreur arrive quand un GOSUB appelle un GOSUB qui appelle un GOSUB, et cela plus de 1000 fois
ou un événement qui déclenche un événement qui déclenche un événement, et cela plus de 1000 fois.

Dans tous les cas, il s'agit d'une erreur dans la programmation. C'est pourquoi il y a apparition d'une erreur au bout de 1000 appels imbriqués pour stopper l'exécution. ("nested" veut dire "imbriqué").

Dans ton programme, il y a une boucle infinie de laquelle il ne sortira pas. C'est pourquoi il y a arrêt au bout de 1000 GOSUB qui s'appellent à la chaine ou de 1000 événements qui se déclenchent eux-même.

_________________
Bizarre bizarre Webdav username : panoramic@jack-panoramic password : panoramic123
Revenir en haut Aller en bas
https://panoramic.1fr1.net
papydall

papydall


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

Bizarre bizarre Empty
MessageSujet: Re: Bizarre bizarre   Bizarre bizarre EmptyJeu 25 Aoû 2022 - 22:41

Salut tout le monde.

Voici un exemple pour illustrer cette erreur de programmation qui déclenche  

Too much nested GOSUB or EVENTS (more than 1000)


Code:

label calcul,suite
dim a,n
n = 1
suite:
while n < 2
    gosub calcul
end_while
end
calcul:
    a = a+1
    gosub suite
return
    

Le sous-programme suite: appelle (par gosub) le sous-programme calcul qui appelle le s/p suite qui appelle ...
Au bout de 1000 appels imbriqués, Panoramic se voit dans l'obligation de mettre fin à cette torture infernale!
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
jjn4

jjn4


Nombre de messages : 2747
Date d'inscription : 13/09/2009

Bizarre bizarre Empty
MessageSujet: Re: Bizarre bizarre   Bizarre bizarre EmptyVen 26 Aoû 2022 - 13:58

Merci de toutes ces réponses.
Le problème, c'est qu'il n'y a pas de gosub, dans mon programme.
Ce serait plutôt les events qui seraient excessifs, mais comment ?
Le programme que j'utilisais, qui est très long,
mais qui était simplement en attente, à ce moment-là,
n'avait que la pendule qui fonctionnait, avec un timer.
Il semblerait qu'au bout d'environ 1/4 d'heure
(soit 1000 secondes, donc 1000 appels du timer)
soit le programme plante et affiche l'erreur précisée plus haut,
soit continue à fonctionner, mais avec l'aiguille des secondes
qui se met à pétouiller, s'arrêtant pour sauter ensuite 2 secondes d'un coup,
et se remettant à fonctionner correctement au bout d'un moment.
N'y a-t-il pas un effacement des événements passés, qui ne se fait pas ?
scratch
Je vous mets ici la partie du programme qui était active, à ce moment.
(avec l'image qui permet de mieux se rendre compte)
Bizarre bizarre Pendul10
Code:
rem ' Pendule
dim CDP%(6) : rem Chiffres Digitaux de la Pendule
dim V1M%, V2M% , V3M% , V4M$ , V5M
label pendule : rem Fonctionnement de la pendule

   timer 560 : rem Pour faire marcher la pendule
      timer_interval 560,1000
      on_timer 560,pendule
      timer_off 560
      
   alpha 830 : rem Base du calendrier
      left 830,10
      top 830,36
      width 830,285
      height 830,32
      color 830,0,0,0
      
   alpha 832 : rem Affichage du calendrier
      left 832,15
      top 832,36
      color 832,0,0,0
      font_size 832,20
      font_color 832,0,255,0
      font_name 832,"Arial"
      caption 832,date$
      
   for V1M% = 1 to 6 : rem Digits de l`heure
      V2M%=V1M%*2+832 : rem N° 834 à 844 à pas de 2
      digit1 V2M%
         if even(V1M%)=0
            left V2M%,(int(V1M%/2)-1)*40+215
         else
            left V2M%,((V1M%/2)-2)*40+231
         end_if
         top V2M%,40
         width V2M%,15
         height V2M%,24
      next V1M%
        
   picture 850 : rem Pendule analogique
      left 850,10
      top 850,78
      width 850,232
      height 850,232
      if file_exists("Pendule.jpg")=1
         file_load 850,"Pendule.jpg"
      end_if

   timer_on 560
      
end

pendule: : rem Fonctionnement de la pendule ===================================
   caption 832,date$
   V4M$=time$
   V3M%=instr(V4M$,":")
   if V3M%=3
      CDP%(1)=val(left$(V4M$,1))
      CDP%(2)=val(mid$(V4M$,2,1))
      CDP%(3)=val(mid$(V4M$,4,1))
      CDP%(4)=val(mid$(V4M$,5,1))
      CDP%(5)=val(mid$(V4M$,7,1))
      CDP%(6)=val(right$(V4M$,1))
   else
      CDP%(1)=0
      CDP%(2)=val(left$(V4M$,1))
      CDP%(3)=val(mid$(V4M$,3,1))
      CDP%(4)=val(mid$(V4M$,4,1))
      CDP%(5)=val(mid$(V4M$,6,1))
      CDP%(6)=val(right$(V4M$,1))
   end_if
   for V3M% = 1 to 6
      caption 832+V3M%*2,CDP%(V3M%)
   next V3M%
   if file_exists("Pendule.jpg")=1
      file_load 850,"Pendule.jpg"
   end_if
   2d_target_is 850
   2d_pen_width 5
   2d_pen_color 255,0,0
   2d_fill_color 255,0,0
   2d_circle 116,116,10
   V3M%=CDP%(1)*10+CDP%(2)
   V5M=(CDP%(3)*10+CDP%(4))/12
   if V3M%>12
      V3M%=V3M%-12
   end_if
   V3M%=(V3M%*5)+int(V5M)
   if V3M%>6
      V5M=(V3M%-30)*(-0.33)
   else
      V5M=(30-V3M%)*0.33
   end_if
   2d_line 116,116,45*sin(V5M/pi)+116,45*cos(V5M/pi)+116
   V3M%=CDP%(3)*10+CDP%(4)
   if V3M%>30
      V5M=(V3M%-30)*(-0.33)
   else
      V5M=(30-V3M%)*0.33
   end_if
   2d_line 116,116,72*sin(V5M/pi)+116,72*cos(V5M/pi)+116
   V3M%=CDP%(5)*10+CDP%(6)
   if V3M%>30
      V5M=(V3M%-30)*(-0.33)
   else
      V5M=(30-V3M%)*0.33
   end_if
   2d_pen_color 0,255,0
   2d_fill_color 0,255,0
   2d_circle 116,116,6
   2d_line 116,116,60*sin(V5M/pi)+116,60*cos(V5M/pi)+116
   2d_pen_width 1
return
Est-ce que ce sont les calculs trigonométriques qui font cette erreur ?
scratch
Revenir en haut Aller en bas
http://jjn4.e-monsite.com
Jack
Admin
Jack


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

Bizarre bizarre Empty
MessageSujet: Re: Bizarre bizarre   Bizarre bizarre EmptySam 27 Aoû 2022 - 9:52

jjn4 a écrit:
Est-ce que ce sont les calculs trigonométriques qui font cette erreur ?
Non. Les calculs trigonométriques ne peuvent pas provoquer cette erreur.

J'ai fait tourner ton programme pendant plusieurs heures sans aucun soucis.

Ce que je soupçonne, c'est que tu utilises un PC qui est lent et sur lequel le sous-programme pendule de traitement d'événement du TIMER 560 met plus d'une seconde à s'effectuer. Ainsi, le RETURN du premier appel n'est pas encore exécuté, qu'il y a un deuxième appel, qui ne se termine pas parce qu'il y a un troisième appel et ainsi de suite. La pile interne des adresses de retour de panoramic se sature à 1000 retours non effectués et l'erreur se déclenche.
Je pense que ce qui prend du temps dans le traitement d'événement pendule, c'est qu'à chaque fois, donc toutes les secondes, il fait des accès disques: il teste la présence de Pendule.jpg et le recharge dans l'objet PICTURE 850.
Code:
if file_exists("Pendule.jpg")=1
      file_load 850,"Pendule.jpg"
end_if

Je te propose 2 solutions (je ne les ai pas essayées):
- soit tu fais tourner ton programme dans un disque dur virtuel (ainsi il n'y a plus d'accès physique au disque dur, mais que des appels en mémoire beaucoup plus rapides)
- ou bien, dans le programme principal, tu charges une fois pour toutes le fichier Pendule.jpg dans un objet IMAGE de numéro XXX (je pense qu'il faut que le fichier soit en BMP, mais je ne suis pas sûr), tu mémorises son image par un 2D_IMAGE_COPY, tu détruits l'objet XXX (car on n'en a plus besoin), et dans pendule, tu remplaces
Code:
if file_exists("Pendule.jpg")=1
      file_load 850,"Pendule.jpg"
end_if
par un appel à 2D_IMAGE_PASTE X,Y,850. Ainsi, il n'y a plus d'accès disque.

_________________
Bizarre bizarre Webdav username : panoramic@jack-panoramic password : panoramic123
Revenir en haut Aller en bas
https://panoramic.1fr1.net
jjn4

jjn4


Nombre de messages : 2747
Date d'inscription : 13/09/2009

Bizarre bizarre Empty
MessageSujet: Re: Bizarre bizarre   Bizarre bizarre EmptySam 27 Aoû 2022 - 13:32

Merci, je vais essayer ça.
Ceci dit, mon ordinateur n'est pas lent.
Par contre, j'ai pensé à autre chose :
juste avant que seule la pendule marche,
un « execute_wait » avait été utilisé,
le programme Internet continuant à fonctionner,
puisqu'il s'agissait d'une symphonie sur youtube.
Peut-être que j'aurais dû plutôt mettre : « execute »
sans le wait, puisque l'utilisation d'objets ayant
une conséquence temporelle, comme « message »
ou « open_dialog » sont plutôt incompatibles avec
l'utilisation d'un timer, alors peut-être execut_wait aussi.
scratch
Revenir en haut Aller en bas
http://jjn4.e-monsite.com
papydall

papydall


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

Bizarre bizarre Empty
MessageSujet: Re: Bizarre bizarre   Bizarre bizarre EmptySam 27 Aoû 2022 - 15:51

@jjn4

Je pense que tu as bien ciblé d'où pourrait venir l'erreur.
En effet execute_wait exécute le fichier et gèle toute autre action jusqu'à la fin.
D'ailleurs tout comme wait qui gèle l'excécution du programme pendant n secondes y compris les actions en attente contrairement à pause qui fait la même chose mais les actions en attente sont effectuées.

Change execute_wait par execute et eventuellement wait par pause si ton programme l'utilse.

Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
jjn4

jjn4


Nombre de messages : 2747
Date d'inscription : 13/09/2009

Bizarre bizarre Empty
MessageSujet: Re: Bizarre bizarre   Bizarre bizarre EmptyDim 28 Aoû 2022 - 19:51

Papydall a écrit:
Change execute_wait par execute
Oui, c'est ce que j'ai fait.
J'en ai aussi profité pour appliquer le conseil de Jack
(on ne sait jamais), sauf que j'ai trouvé une autre solution :
(j'aime bien les 3° solutions, surtout face aux dilemmes)  Laughing
J'ai effacé les aiguilles avant de les afficher à leurs nouvelles positions.
C'est effectivement plus simple.
J'espère que maintenant, cela va bien marcher.
Merci pour tous ces conseils !
cheers
Revenir en haut Aller en bas
http://jjn4.e-monsite.com
jjn4

jjn4


Nombre de messages : 2747
Date d'inscription : 13/09/2009

Bizarre bizarre Empty
MessageSujet: Re: Bizarre bizarre   Bizarre bizarre EmptyDim 4 Sep 2022 - 16:19

A essayer des solutions faciles (ma 3° solution),
j'ai finalement oublié de poser LA question suivante :
Dans sa première solution, Jack propose d'utiliser un disque virtuel.
Gasp !!! - C'est sympa, comme idée !
Mais comment on fait pour avoir un disque virtuel ?
Et une fois qu'on est arrivé à ça, comment on l'utilise en Panoramic ?
Ah oui, ça c'est LA question !
scratch scratch scratch study scratch scratch scratch
Revenir en haut Aller en bas
http://jjn4.e-monsite.com
Marc

Marc


Nombre de messages : 2466
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

Bizarre bizarre Empty
MessageSujet: Re: Bizarre bizarre   Bizarre bizarre EmptyDim 4 Sep 2022 - 17:06

Salut JJN4 !

Le disque virtuel est à créer sous Windows. C'est une portion de la mémoire vive (ram) qui est accessible comme un disque quelconque à l'aide d'une lettre dédiée comme un vrai disque. Le disque virtuel est volatil : si tu éteins le PC, le disque virtuel perd toutes ses données.
Voici un article parmi tant d’autres : >> Cliquez ICI <<
Revenir en haut Aller en bas
jjn4

jjn4


Nombre de messages : 2747
Date d'inscription : 13/09/2009

Bizarre bizarre Empty
MessageSujet: Re: Bizarre bizarre   Bizarre bizarre EmptyDim 4 Sep 2022 - 18:34

Ouh là, oui !
Ca paraît lourd !
Et il y a des dangers ?
scratch
Revenir en haut Aller en bas
http://jjn4.e-monsite.com
Contenu sponsorisé





Bizarre bizarre Empty
MessageSujet: Re: Bizarre bizarre   Bizarre bizarre Empty

Revenir en haut Aller en bas
 
Bizarre bizarre
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» appeller une dll pour carte vm110n
» version instantanée du 5 décembre 2009
»  BIZARRE, VOUS AVEZ DIT BIZARRE !
» bizarre,bizarre
» Bizarre bizarre est-ce un bug du langage ? (résolu)

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: