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
» Gestion d'un système client-serveur.
sub rappelé avant sa fin Emptypar Klaus Ven 17 Mai 2024 - 14:02

» item_index(résolu)
sub rappelé avant sa fin Emptypar jjn4 Mar 14 Mai 2024 - 19:38

» Bataille terrestre
sub rappelé avant sa fin Emptypar jjn4 Lun 13 Mai 2024 - 15:01

» SineCube
sub rappelé avant sa fin Emptypar Marc Sam 11 Mai 2024 - 12:38

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
sub rappelé avant sa fin Emptypar Marc Sam 11 Mai 2024 - 12:22

» Philharmusique
sub rappelé avant sa fin Emptypar jjn4 Ven 10 Mai 2024 - 13:58

» PANORAMIC V 1
sub rappelé avant sa fin Emptypar papydall Jeu 9 Mai 2024 - 3:22

» select intégrés [résolu]
sub rappelé avant sa fin Emptypar jjn4 Mer 8 Mai 2024 - 17:00

» number_mouse_up
sub rappelé avant sa fin Emptypar jjn4 Mer 8 Mai 2024 - 11:59

» Aide de PANORAMIC
sub rappelé avant sa fin Emptypar jjn4 Mer 8 Mai 2024 - 11:16

» trop de fichiers en cours
sub rappelé avant sa fin Emptypar lepetitmarocain Mer 8 Mai 2024 - 10:43

» Je teste PANORAMIC V 1 beta 1
sub rappelé avant sa fin Emptypar papydall Mer 8 Mai 2024 - 4:17

» bouton dans autre form que 0(résolu)
sub rappelé avant sa fin Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
sub rappelé avant sa fin Emptypar Klaus Lun 6 Mai 2024 - 11:41

» @Jack
sub rappelé avant sa fin Emptypar Jack Mar 30 Avr 2024 - 20:40

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
Le Deal du moment :
Bon plan achat en duo : 2ème robot cuiseur ...
Voir le deal
600 €

 

 sub rappelé avant sa fin

Aller en bas 
4 participants
AuteurMessage
Yannick




Nombre de messages : 8611
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

sub rappelé avant sa fin Empty
MessageSujet: sub rappelé avant sa fin   sub rappelé avant sa fin EmptyDim 16 Oct 2016 - 15:15

Voilà mon souci.

J' ai une procédure dont je ne peux quantifier le temps d' exécution (Message écrit + vocal)
et qui est appelé plusieurs fois dans le même programme.
Il arrive que cette procédure soit rappelé avant sa propre fin. Rolling Eyes
Cela provoque une erreur de variable déjà déclarée. Wink

Quelqu' un aurait il une solution ? Sad

Jack, tu n' aurais pas une commande WAIT VAR%=0 en stock.
le programme attend que la variable VAR% soit égale à 0 ou 1 (peu importe) pour continuer.
Revenir en haut Aller en bas
Klaus

Klaus


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

sub rappelé avant sa fin Empty
MessageSujet: Re: sub rappelé avant sa fin   sub rappelé avant sa fin EmptyDim 16 Oct 2016 - 15:55

Deux solutions:
1. dans la sub, tu fais
Code:
if variable("nom_de_la_variable_en_conflit")=1
  ... ici, la procédure est déjà en cours !
  exit_sub
end_if
dim_local nom_de_la_variable_en_conflit
2. tu déclares une variable globale du type ma_sub_difficile%. En entrant dans la sub en question, tu vérifies qu'elle est à zéro. Si oui, tu la mets à 1 et tu continues, et tu la mets à zéro en sortant. Si par contre, elle est à 1, tu sors immédiatement.

Les deux solutions sont équivalentes, mais la première est plus "propre".
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
papydall

papydall


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

sub rappelé avant sa fin Empty
MessageSujet: Re: sub rappelé avant sa fin   sub rappelé avant sa fin EmptyDim 16 Oct 2016 - 16:17

ygeronimi a écrit:
J' ai une procédure dont je ne peux quantifier le temps d' exécution (Message écrit + vocal)
et qui est appelé plusieurs fois dans le même programme.
Il arrive que cette procédure soit rappelé avant sa propre fin.  
Cela provoque une erreur de variable déjà déclarée.

Comment peut-on rappeler une sub avant sa propre fin ?!
A part un appel récursif (que panoramic ne permet pas dans tous les cas), je ne vois pas comment une SUB qui est en cours d’exécution puisse être rappelée avant sa propre fin !

Je soupçonne le code qui ,lui, n’est pas propre.
Mais, tu as peut-être raison là où j’ai tort.

Tu n’aurais pas un bout de code en stock pour illustrer ça ?
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Klaus

Klaus


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

sub rappelé avant sa fin Empty
MessageSujet: Re: sub rappelé avant sa fin   sub rappelé avant sa fin EmptyDim 16 Oct 2016 - 16:36

Citation :
Comment peut-on rappeler une sub avant sa propre fin ?!
C'est simple. Il suffit que la sub en question soit appelée par une routine évènement (un timer, un on_click etc). Ce sont des choses qui arrivent.

EDIT

Un exemple très simple pour le provoquer:
Code:
label clic

button 1 : top 1,10 : left 1,10 : caption 1,"Cliquer ici" : on_click 1,clic


end

clic:
essai()
return

sub essai()
dim_local test, i%
for i%=1 to 300
  wait 2
next i%
end_sub
Clique 2 fois sur le bouton, et boum!!!!

Voici la version corrigée:
Code:
label clic

button 1 : top 1,10 : left 1,10 : caption 1,"Cliquer ici" : on_click 1,clic


end

clic:
if variable("test")=1 then return
essai()
return

sub essai()
dim_local test, i%
for i%=1 to 300
  wait 2
next i%
end_sub
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
silverman

silverman


Nombre de messages : 968
Age : 51
Localisation : Picardie
Date d'inscription : 18/03/2015

sub rappelé avant sa fin Empty
MessageSujet: Re: sub rappelé avant sa fin   sub rappelé avant sa fin EmptyDim 16 Oct 2016 - 17:53

@klaus
Il vaut mieux utiliser une variable globale car plusieurs subs différentes peuvent être appelées dans la procédure évenement

@ygeronimi
C'est amusant, tu as posté la solution à ton problème sans le savoir!
Avec l'ex. de klaus:
Code:
label clic

dim CURRENT_EVENT_clic%
dim c%

button 1 : top 1,10 : left 1,100 : caption 1,"Cliquer ici" : on_click 1,clic


end

clic:
 if CURRENT_EVENT_clic%=1 then return
 CURRENT_EVENT_clic%=1

   c%=c%+1 : caption 0,"evenement applé "+str$(c%)+" fois"
   essai()

 CURRENT_EVENT_clic%=0
return

sub essai()
dim_local test, i%
for i%=1 to 30
  wait 2
next i%
end_sub
Revenir en haut Aller en bas
Klaus

Klaus


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

sub rappelé avant sa fin Empty
MessageSujet: Re: sub rappelé avant sa fin   sub rappelé avant sa fin EmptyDim 16 Oct 2016 - 18:11

Citation :
Il vaut mieux utiliser une variable globale car plusieurs subs différentes peuvent être appelées dans la procédure évenement
Fort juste, Silverman.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
papydall

papydall


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

sub rappelé avant sa fin Empty
MessageSujet: Re: sub rappelé avant sa fin   sub rappelé avant sa fin EmptyDim 16 Oct 2016 - 18:25

J’ai écrit ci-haut
Citation :
Je soupçonne le code qui, lui, n’est pas propre.

Justement le code de l’exemple donné par Klaus n’est pas « propre » (pardon Klaus)
J'admets que c'est un exemple de code pour montrer le problème, mais le codeur doit prendre les mésures nécessaires pour présenter un code sans faille (ou presque).
Personnellement je le code ainsi

Code:

label clic
button 1 : top 1,10 : left 1,10 : caption 1,"Cliquer ici" : on_click 1,clic
end

clic:
essai()
return

sub essai()
   dim_local test, i%
   inactive 1  : ' < --- inhiber le bouton
   for i%=1 to 300
       wait 2
   next i%
   active 1  : ' < --- rétablir le bouton
end_sub

… et plus de problème !
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Klaus

Klaus


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

sub rappelé avant sa fin Empty
MessageSujet: Re: sub rappelé avant sa fin   sub rappelé avant sa fin EmptyDim 16 Oct 2016 - 18:35

Bien sûr, cela supprime le conflit dans mon exemple restreint.

Mais relis l'énoncé initial de Ygeronimi. Il a une sub qui affiche un message et diffuse une annonce vocale. J'imagine que c'est typiquement le cas d'une sub auxiliaire qui peut être appelée n'importe où, pour réagir aux actions de l'utilisateur (message d'erreur dans un jeu pour action invalide etc), annonce de points gagnés lors du passage d'un personnage de jeu sur en endroit précis, et j'en passe.

Dans tous ces cas, l'annonce peut être déclenchée par des évènements très divers et pas seulement le clic sur un bouton, mais découler plutôt du contexte général du jeu. Et c'est pourquoi j'ai focalisé la solution sur le test de la présence de la variable sans considérer ce qui a déclenché l'action.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
papydall

papydall


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

sub rappelé avant sa fin Empty
MessageSujet: Re: sub rappelé avant sa fin   sub rappelé avant sa fin EmptyDim 16 Oct 2016 - 18:42

Vu sous cet angle, c’est plus clair !
C'est aussi plus "propre". Laughing
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Yannick




Nombre de messages : 8611
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

sub rappelé avant sa fin Empty
MessageSujet: re   sub rappelé avant sa fin EmptyLun 17 Oct 2016 - 11:06

La procédure rappelé est celle ci :
Code:
sub FCT_SelectMessage(M%)
  dim_local i%,mes$
  i%=M%
  select i%
  case 1 : mes$="Joueur 1, distribue."
  case 2 : mes$="Joueur 2, distribue."
  case 3 : mes$="Joueur 1, joue."
  case 4 : mes$="Joueur 2, joue."
  case 5 : mes$="Joueur 1, gagne."
  case 6 : mes$="Joueur 2, gagne."
  case 7 : mes$="Bataille !"
  case 8 : mes$="Joueur 1, a Gagné !"
  case 9 : mes$="Joueur 2, a Gagné !"
  end_select
  if M%<7
      caption alph0%(5),mes$
      pause 1000
  else
      caption alph0%(0),mes$
      left alph0%(0),(width(pan%(3))-width(alph0%(0)))/2
      pause 1000
  end_if
  if Son%=1
      FCT_Parler(mes$)
      pause 2000
  end_if
end_sub

lorsque un joueur clique sur une pile de cartes.
L' erreur se produit sur la ligne de déclaration des variables locales.
Si je peux finir par trouver un temps de pause pour l' affichage écrit, 
il n' est pas simple de chronométrer le temps du message parlé.

Je vais étudier vos solutions de près, très près... Shocked
Revenir en haut Aller en bas
Contenu sponsorisé





sub rappelé avant sa fin Empty
MessageSujet: Re: sub rappelé avant sa fin   sub rappelé avant sa fin Empty

Revenir en haut Aller en bas
 
sub rappelé avant sa fin
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Avant de dire...le gros mots
» Recherche de texte AVANT/ARRIERE dans un SYNEDIT
» mettre une picture en avant plan
» Avant de faire une demande incongrue
» Verrouiller / mettre une fenetre en avant plan

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: