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.
Sortie de Sub intempestive Emptypar Pedro Aujourd'hui à 10:37

» Un autre pense-bête...
Sortie de Sub intempestive Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Sortie de Sub intempestive Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Sortie de Sub intempestive Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Sortie de Sub intempestive Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Sortie de Sub intempestive Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Sortie de Sub intempestive Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Sortie de Sub intempestive Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Sortie de Sub intempestive Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Sortie de Sub intempestive Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Sortie de Sub intempestive Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Sortie de Sub intempestive Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Sortie de Sub intempestive Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Sortie de Sub intempestive Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Sortie de Sub intempestive 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
-20%
Le deal à ne pas rater :
Drone Dji DJI Mini 4K (EU)
239 € 299 €
Voir le deal

 

 Sortie de Sub intempestive

Aller en bas 
+2
Jean Claude
JL35
6 participants
Aller à la page : 1, 2  Suivant
AuteurMessage
JL35




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

Sortie de Sub intempestive Empty
MessageSujet: Sortie de Sub intempestive   Sortie de Sub intempestive EmptySam 18 Fév 2017 - 18:13

Je n'y comprends rien, c'est juste une ébauche de sub, en construction, non terminée, mais son comportement m'échappe:
Code:
PICTURE 10: FULL_SPACE 10

Des2Pic(10,WIDTH(0),0)
Terminate
' ==============================================================================
SUB Des2Pic(p%,x%,y%)
  ' Outil de dessin dans le picture p%, positionné en x%,y%
  IF LABEL("Quid") = 0 THEN LABEL Quid
  IF LABEL("Chco") = 0 THEN LABEL Chco
  IF LABEL("Desd") = 0 THEN LABEL Desd
  IF LABEL("Dest") = 0 THEN LABEL Dest
  IF LABEL("Desf") = 0 THEN LABEL Desf
  DIM_LOCAL f%,ff%,i,i1,j,k%,a$,co,pc,x0%,y0%,r,g,b
  DATA "Pal16",0,0,0,0,0,128,0,0,255,0,128,0,0,128,128,0,255,0,0,255,255,128,0,0
  DATA 128,0,128,128,128,0,128,128,128,192,102,192,255,0,0,255,0,255,255,255,0,255,255,255
  ff% = 0: f% = 950
  FORM f%: TOP f%,y%: LEFT f%,x%: HEIGHT f%,480: BORDER_SMALL f%: WIDTH f%,100
           FONT_NAME f%,"Arial": FONT_BOLD f%: COLOR f%,190,255,255
  i=f%+1: ALPHA i: PARENT i,f%: TOP i,0: LEFT i,20: CAPTION i,"Ép. trait:"
  i=i+1: SPIN i: PARENT i,f%: TOP i,TOP(i-1)+15: LEFT i,20: WIDTH i,50
         MIN i,1: MAX i,20: POSITION i,1
  i=i+1: PICTURE i: PARENT i,f%: TOP i,TOP(i-1)+25:WIDTH i,WIDTH(f%)-17: pc = i
         HEIGHT i,50: k%=WIDTH(i)/8+1: ON_CLICK i,Chco: 2D_TARGET_IS i
         RESTORE: READ a$: WHILE a$<>"Pal16": READ a$: END_WHILE
         FOR j=0 TO 1
             y% = 25*j
             FOR i1=0 TO 7
                 x% = i1*(k%-1): READ r: READ g: READ b: 2D_FILL_COLOR r,g,b
                 2D_RECTANGLE x%,y%,x%+k%,y%+24
             NEXT i1
         NEXT j
  i=i+1: PICTURE i: PARENT i,f%: TOP i,TOP(i-1)+HEIGHT(i-1)+3: WIDTH i,WIDTH(i-1)/2
         LEFT i,20: HEIGHT i,16: COLOR i,0,0,0
  i=i+1: CONTAINER_OPTION i: PARENT i,f%: TOP i,TOP(i-1)+25: WIDTH i,80: LEFT i,2
         HEIGHT i,100: CAPTION i," - Figure: -": COLOR i,255,255,128: co = i
  i=i+1: OPTION i: PARENT i,co: TOP i,16: LEFT i,3: CAPTION i,"Point"
  i=i+1: OPTION i: PARENT i,co: TOP i,TOP(i-1)+16: LEFT i,LEFT(i-1): CAPTION i,"Trait"
  i=i+1: OPTION i: PARENT i,co: TOP i,TOP(i-1)+16: LEFT i,LEFT(i-1): CAPTION i,"Rectangle"
  i=i+1: OPTION i: PARENT i,co: TOP i,TOP(i-1)+16: LEFT i,LEFT(i-1): CAPTION i,"Cercle"
  i=i+1: OPTION i: PARENT i,co: TOP i,TOP(i-1)+16: LEFT i,LEFT(i-1): CAPTION i,"Remplir"
         MARK_ON co+2
  i=i+1: BUTTON i: PARENT i,f%: TOP i,HEIGHT(f%)-65: LEFT i,WIDTH(f%)/2-45
         CAPTION i,"Quitter": ON_CLICK i,Quid
    
  2D_TARGET_IS p%
  x0% = -1: ON_MOUSE_DOWN p%,Desd
  r=0: g=0: b=0
  WHILE ff% = 0: PAUSE 100: END_WHILE
  DELETE f%: EXIT_SUB
' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Quid:
  ff% = 1
RETURN
' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Chco:
  ' clic dans la zone
  x% = MOUSE_X_POSITION(pc): y% = MOUSE_Y_POSITION(pc)
  r=COLOR_PIXEL_RED(pc,x%,y%): g=COLOR_PIXEL_GREEN(pc,x%,y%): b=COLOR_PIXEL_BLUE(pc,x%,y%)
  2D_TARGET_IS pc+1: 2D_FILL_COLOR r,g,b: 2D_RECTANGLE 0,0,WIDTH(pc+1),HEIGHT(pc+1)
  2D_TARGET_IS p%
RETURN
' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Desd:
  ' clic dans la zone
  x% = MOUSE_X_POSITION(p%): y% = MOUSE_Y_POSITION(p%)
  IF CHECKED(co+1) = 1
      2D_PEN_COLOR r,g,b: 2D_POINT x%,y%
  ELSE
      IF CHECKED(co+5) = 1: ' remplir
          2D_FLOOD x%,y%,r,g,b
      ELSE
          x0% = x%: y0% = y%
          OFF_MOUSE_DOWN p%: ON_MOUSE_MOVE p%,Dest: ON_MOUSE_UP p%,Desf
          CLIPBOARD_COPY p%
      END_IF
  END_IF
RETURN
' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Dest:
  ' dessin intermédiaire
  CLIPBOARD_PASTE p%
  2D_PEN_COLOR 0,0,0: 2D_PEN_DOT
  x% = MOUSE_X_POSITION(p%): y% = MOUSE_Y_POSITION(p%)
  IF CHECKED(co+2) = 1: ' trait
      2D_LINE xO%,y0%,x%,y%
  ELSE
      IF CHECKED(co+3) = 1: ' rectangle
          2D_RECTANGLE x0%,y0%,x%,y%
      ELSE
          IF CHECKED(co+4) = 1: ' cercle
              k% = (x%-x0%)/2
              2D_CIRCLE x%+k%,y%+k%,k%
          END_IF
      END_IF
  END_IF
RETURN
' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Desf:
  ' dessin final
  OFF_MOUSE_UP p%
  CLIPBOARD_PASTE p%
  2D_PEN_COLOR r,g,b: 2D_PEN_SOLID: 2D_PEN_WIDTH POSITION(f%+2)
  x% = MOUSE_X_POSITION(p%): y% = MOUSE_Y_POSITION(p%)
  IF CHECKED(co+2) = 1: ' trait
      2D_LINE xO%,y0%,x%,y%
  ELSE
      IF CHECKED(co+3) = 1: ' rectangle
          2D_RECTANGLE x0%,y0%,x%,y%
      ELSE
          IF CHECKED(co+4) = 1: ' cercle
              k% = (x%-x0%)/2
              2D_CIRCLE x%+k%,y%+k%,k%
          END_IF
      END_IF
  END_IF
  ON_MOUSE_DOWN p%,Desd: x0% = -1
RETURN
' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
END_SUB
' ==============================================================================
Je clique dans la zone de dessin, et je suis aussitôt branché sur le début du programme appelant, avec:
OBJECT ALREADY DEFINED Line 1
scratch


Dernière édition par JL35 le Sam 18 Fév 2017 - 19:53, édité 1 fois
Revenir en haut Aller en bas
Jean Claude

Jean Claude


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

Sortie de Sub intempestive Empty
MessageSujet: Re: Sortie de Sub intempestive   Sortie de Sub intempestive EmptySam 18 Fév 2017 - 18:28

Je vois que tu utilises TERMINATE à la place de END Question Question Question
As-tu une raison particulière pour procéder ainsi ?

Mais, ce n'est pas la cause du problème, j'ai cherché et je n'ai pas d'explication.

A+
Revenir en haut Aller en bas
Jean Claude

Jean Claude


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

Sortie de Sub intempestive Empty
MessageSujet: Re: Sortie de Sub intempestive   Sortie de Sub intempestive EmptySam 18 Fév 2017 - 18:47

Toujours pas trouvé le bug, mais j'ai trouvé ceci => OFF_MOUSE_DOWN et OFF_MOUSE_UP n'ont pas le numéro d'objet dans ton code et ce n'est pas signalé par Panoramic ?
D'après la doc il faut écrire OFF_MOUSE_DOWN N .

A+
Revenir en haut Aller en bas
JL35




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

Sortie de Sub intempestive Empty
MessageSujet: Re: Sortie de Sub intempestive   Sortie de Sub intempestive EmptySam 18 Fév 2017 - 19:32

Bonsoir Jean Claude,
et merci à toi d'avoir regardé.

Le Terminate, c'est pour les essais, pour ne pas avoir à recliquer au retour de la sub pour fermer le Form 0.

Pour le OFF_MOUSE, je m'étais basé sur des notes que j'avais pris, incomplètes, et tu as raison, il faut ajouter le numéro d'objet concerné. Bizarre que l'éditeur ne le signale pas.

J'ai corrigé, mais le problème reste entier, pourquoi, même s'il y a des erreurs de structure (sans doute), est-ce que je suis rebranché à la ligne 1 du code ??? j'ai jamais vu ça...
Revenir en haut Aller en bas
Marc

Marc


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

Sortie de Sub intempestive Empty
MessageSujet: Re: Sortie de Sub intempestive   Sortie de Sub intempestive EmptySam 18 Fév 2017 - 19:38

Salut à tous !

Sans certitude, pour moi c'est la boucle WHILE qui est fautive.

Après avoir supprimé tout ce que je pouvais enlever :

Code:
PICTURE 10: FULL_SPACE 10

Des2Pic()
Terminate
' ==============================================================================
SUB Des2Pic()
  ' Outil de dessin dans le picture p%, positionné en x%,y%

  IF LABEL("Desd") = 0 THEN LABEL Desd

  DIM_LOCAL ff%

  ON_MOUSE_DOWN 10,Desd

'  WHILE ff% = 0: PAUSE 100: END_WHILE
end
Desd:

RETURN
' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

END_SUB
' ==============================================================================

Si tu remets la boucle WHILE en service, on retrouve le plantage.
Revenir en haut Aller en bas
JL35




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

Sortie de Sub intempestive Empty
MessageSujet: Re: Sortie de Sub intempestive   Sortie de Sub intempestive EmptySam 18 Fév 2017 - 19:45

Je ne vois pas bien pourquoi, c'est une structure que j'utilise couramment dans des subs pour me mettre en attente d'événement, en l'occurence le clic sur 'OK'.

Et ton 'end' au milieu de la sub, c'est bizarre...
Ça termine le programme et il ne se passe plus rien, évidemment.
Revenir en haut Aller en bas
Marc

Marc


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

Sortie de Sub intempestive Empty
MessageSujet: Re: Sortie de Sub intempestive   Sortie de Sub intempestive EmptySam 18 Fév 2017 - 19:47

Désolé, le END, c'était pour faire des essais.

Edit : En remplaçant le ON_MOUSE_DOWN par un ON_CLICK, je n'ai pas de plantage.

Serait-ce un bug de la fonction ON_MOUSE_DOWN Panoramic ?


Dernière édition par Marc37 le Sam 18 Fév 2017 - 19:58, édité 1 fois
Revenir en haut Aller en bas
JL35




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

Sortie de Sub intempestive Empty
MessageSujet: Re: Sortie de Sub intempestive   Sortie de Sub intempestive EmptySam 18 Fév 2017 - 19:55

J'ai corrigé 2 ou 3 bricoles là-haut, mais ça ne change rien au problème.

Intéressant, je vais regarder.

Mais l'embêtant c'est que pour cet usage ce n'est pas intéressant, le ON_CLICK ne réagit pas au click lui-même mais au relâchement du bouton...
Revenir en haut Aller en bas
Marc

Marc


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

Sortie de Sub intempestive Empty
MessageSujet: Re: Sortie de Sub intempestive   Sortie de Sub intempestive EmptySam 18 Fév 2017 - 20:35

Dans mon programme de jeu des 6 palets,
Citation :
https://panoramic.1fr1.net/t5052-le-jeu-des-6-palets

alors que la fonction ON_MOUSE_DOWN n’existait pas,  j’avais utilisé dans ma boucle WHILE :

Code:
WHILE 0=0
   G%= MOUSE_LEFT_UP(10)
   F%= MOUSE_LEFT_DOWN(10)
   IF F% = 1 THEN Zone_cliquee()
END_WHILE
Revenir en haut Aller en bas
JL35




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

Sortie de Sub intempestive Empty
MessageSujet: Re: Sortie de Sub intempestive   Sortie de Sub intempestive EmptySam 18 Fév 2017 - 20:50

C'est intéressant, il me semble que j'ai déjà utilisé ce genre de structure (avec toutefois une pause quelque part dans la boucle, sinon ça tourne à toute vitesse).
Je vais sans doute finir par faire quelque chose comme ça, mais je suis quand même intrigué par mon programme qui reboucle sur la ligne 1 ...

Merci en tout cas Marc pour tes remarques et tes suggestions bienvenues Wink
Revenir en haut Aller en bas
Klaus

Klaus


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

Sortie de Sub intempestive Empty
MessageSujet: Re: Sortie de Sub intempestive   Sortie de Sub intempestive EmptySam 18 Fév 2017 - 21:20

Je ne me suis pas plongé dans ce code - dès qu'il y a une boucle avec PAUSE, je deviens méfiant. J'ai fait un petit code qui permet de dessiner dans un picture, à main levée, à l'aide de la souris. Enfoncez la touche gauche et maintenez enfoncée pendant le tracé, et relâchez pour déplacer vers un autre point de départ.
Code:
label down, up, move
dim move%, x%, y%
picture 1 : full_space 1
2d_target_is 1
on_mouse_down 1,down
on_mouse_up 1,up
on_mouse_move 1,move
end

down:
  move% = 1
  x% = mouse_x_left_down(1)
  y% = mouse_y_left_down(1)
  caption 0,"down "+str$(x%)+","+str$(y%)
  2d_poly_from x%,y%
  return

up:
  move% = 0
  return

move:
  if move%=1
    move% = 0
    x% = mouse_x_position(1)
    y% = mouse_y_position(1)
    caption 0,"move "+str$(x%)+","+str$(y%)
    2d_poly_to x%,y%
    move% = 1
  end_if
return
Voici l'utilisation correcte de ces évènements.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
JL35




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

Sortie de Sub intempestive Empty
MessageSujet: Re: Sortie de Sub intempestive   Sortie de Sub intempestive EmptySam 18 Fév 2017 - 21:32

Chapeau pour la démo Klaus, ça marche impeccable ! et en si peu de lignes...

Finalement je laisse tomber mon système, trop tordu et que je ne maîtrise pas, apparemment.
Je vais m'inspirer de ce que tu as fait.
Merci à toi pour le partage.
Revenir en haut Aller en bas
Klaus

Klaus


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

Sortie de Sub intempestive Empty
MessageSujet: Re: Sortie de Sub intempestive   Sortie de Sub intempestive EmptyDim 19 Fév 2017 - 10:42

Tiens - cadeau ! Voici comment tracer des rectangles: cliquer sur le point de départ, puis, en gardant la touche enfoncée, tirer la souris pour obtenir le réctangle voulue. Deux combos permettent de choisir entre dession libre et rectangle:
Code:
label down, up, move
dim move%, x%, y%, x1%, y1%
picture 1 : full_space 1 : height 1,height(1)-40 : top 1,40
image 2
option 11 : top 11,10 : left 11,10 : caption 11,"Dessin libre"
option 12 : top 12,10 : left 12,100 : caption 12,"Rectangle"
mark_on 11
2d_target_is 1
on_mouse_down 1,down
on_mouse_up 1,up
on_mouse_move 1,move
end

down:
  x% = mouse_x_left_down(1)
  y% = mouse_y_left_down(1)
  caption 0,"down "+str$(x%)+","+str$(y%)
  2d_poly_from x%,y%
  if checked(12)=1 then 2d_image_copy 2,0,0,width(1),height(1)
  display
  move% = 1
  return

up:
  move% = 0
  return

move:
  if move%=1
    move% = 0
    x1% = mouse_x_position(1)
    y1% = mouse_y_position(1)
    caption 0,"move "+str$(x1%)+","+str$(y1%)
    if checked(12)=1
      2d_image_paste 2,0,0
      2d_poly_from x%,y%
      2d_poly_to x%,y1%
      2d_poly_to x1%,y1%
      2d_poly_to x1%,y%
      2d_poly_to x%,y%
    else
      2d_poly_to x1%,y1%
    end_if
    move% = 1
  end_if
return
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Marc

Marc


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

Sortie de Sub intempestive Empty
MessageSujet: Re: Sortie de Sub intempestive   Sortie de Sub intempestive EmptyDim 19 Fév 2017 - 11:17

J'en profite ! Very Happy

Merci Klaus ! cheers
Revenir en haut Aller en bas
Klaus

Klaus


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

Sortie de Sub intempestive Empty
MessageSujet: Re: Sortie de Sub intempestive   Sortie de Sub intempestive EmptyDim 19 Fév 2017 - 11:55

Dernière amélioration: 3 modes de dessin: tracé à main libre, rectangle transparent, rectangle opaque:
Code:
label down, up, move
dim move%, x%, y%, x1%, y1%
picture 1 : full_space 1 : height 1,height(1)-40 : top 1,40
image 2
option 11 : top 11,10 : left 11,10 : caption 11,"Dessin libre"
option 12 : top 12,10 : left 12,100 : caption 12,"Rectangle"
option 13 : top 13,10 : left 13,190 : caption 13,"Rectangle plein"
mark_on 11
2d_target_is 1
on_mouse_down 1,down
on_mouse_up 1,up
on_mouse_move 1,move
end

down:
  x% = mouse_x_left_down(1)
  y% = mouse_y_left_down(1)
  caption 0,"down "+str$(x%)+","+str$(y%)
  2d_poly_from x%,y%
  if checked(11)=0 then 2d_image_copy 2,0,0,width(1),height(1)
  display
  move% = 1
  return

up:
  move% = 0
  return

move:
  if move%=1
    move% = 0
    x1% = mouse_x_position(1)
    y1% = mouse_y_position(1)
    caption 0,"move "+str$(x1%)+","+str$(y1%)
    if checked(11)=1
      2d_poly_to x1%,y1%
    end_if
    if checked(12)=1
      2d_image_paste 2,0,0
      2d_poly_from x%,y%
      2d_poly_to x%,y1%
      2d_poly_to x1%,y1%
      2d_poly_to x1%,y%
      2d_poly_to x%,y%
    end_if
    if checked(13)=1
      2d_image_paste 2,0,0
      2d_rectangle x%,y%,x1%,y1%
    end_if
    move% = 1
  end_if
return

A partir de là, il est facile d'ajouter des cercles/ellipses, couleurs et épaisseurs de tracé, couleurs de remplissage etc. Mais le principe de dessin avec la souris est bien établ.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
papydall

papydall


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

Sortie de Sub intempestive Empty
MessageSujet: Re: Sortie de Sub intempestive   Sortie de Sub intempestive EmptyDim 19 Fév 2017 - 13:24

Mon explication:
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Marc

Marc


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

Sortie de Sub intempestive Empty
MessageSujet: Re: Sortie de Sub intempestive   Sortie de Sub intempestive EmptyDim 19 Fév 2017 - 14:01

cheers  Merci Papydall pour cette explication claire, nette et précise.  Very Happy
Revenir en haut Aller en bas
JL35




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

Sortie de Sub intempestive Empty
MessageSujet: Re: Sortie de Sub intempestive   Sortie de Sub intempestive EmptyDim 19 Fév 2017 - 15:31

Merci d'abord à Klaus pour son bout de programme bien intéressant, je vais me faire un plaisir de m'en inspirer.

Et merci à Papydall pour sa dissertation.

Je remarque toutefois ceci: tu dis que l'exécution de la sub se poursuit jusqu'au End_Sub et sortie, et donc s'il se produit un événement ensuite le programme ne sait plus le traiter...

Or, l'exécution s'arrête bien (théoriquement) à l'intérieur de la sub, dans la boucle d'attente qui teste le changement d'état de ff%, positionné par l'appui sur la touche 'Quitter'. Logiquement on ne peut sortir de cette boucle (et exécuter l'Exit_Sub) que quand cet indicateur est positionné.

Je subodore un conflit entre deux attentes d'événements, ma boucle avec Pause, et les ON_MOUSE qui sont en surveillance permanente quelque part.

Bon, je ne mets pas 'Résolu', mais j'abandonne ce système, je vais voir du côté de chez l'ami Klaus.

PS
Et finalement, en regardant un peu dans mes archives, j'avais fait quelque chose qui fonctionnait très bien avec les nouvelles fonctions ON_MOUSE: https://panoramic.1fr1.net/t5062-encore-du-dessin
donc je ne vais pas réinventer l'eau chaude.

Ce que j'essayais de faire, c'est de les actionner à l'intérieur d'une Sub, et jusqu'à preuve du contraire ça semble incompatible.
On dirait que le ON_MOUSE, déclenché depuis une Sub, rend la main après traitement de l'événement au programme principal, et non pas à la Sub active, en court-circuitant celle-ci, du coup ça fait n'importe quoi.
Revenir en haut Aller en bas
JL35




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

Sortie de Sub intempestive Empty
MessageSujet: Re: Sortie de Sub intempestive   Sortie de Sub intempestive EmptyMer 1 Mar 2017 - 16:16

@Klaus,

Je remonte ce vieux (?) sujet, il me semble qu'il y a quand même quelque chose qui ne va pas avec les nouvelles fonctions ON_MOUSE.
Dans ma sub à moi je pars tout de suite en erreur.

Mais si je reprends ton dernier code tel quel, option 'Rectangle'
Je trace des rectangles successifs, et je finis toujours par tomber dans l'erreur signalée plus haut
Sortie de Sub intempestive Ex10
ça arrive en général au bout d'entre 1 et 10 ou 15 rectangles successifs, et ça semble indiquer que dans ce cas le traitement d'événement par Panoramic se rebranche en tout début de programme.

Je ne l'ai pas reproduit avec l'option 'Dessin libre', mais là le traitement est différent.
Revenir en haut Aller en bas
Klaus

Klaus


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

Sortie de Sub intempestive Empty
MessageSujet: Re: Sortie de Sub intempestive   Sortie de Sub intempestive EmptyMer 1 Mar 2017 - 16:42

Il y a effectivement un problème. J'ai modifié le code comme suit:
Code:
message "démarrage"
label down, up, move
dim x%, y%, x1%, y1%
picture 1 : full_space 1 : height 1,height(1)-40 : top 1,40
image 2
option 11 : top 11,10 : left 11,10 : caption 11,"Dessin libre"
option 12 : top 12,10 : left 12,100 : caption 12,"Rectangle"
option 13 : top 13,10 : left 13,190 : caption 13,"Rectangle plein"
mark_on 12
2d_target_is 1
on_mouse_down 1,down
on_mouse_up 1,up
end

down:
  x% = mouse_x_left_down(1)
  y% = mouse_y_left_down(1)
  caption 0,"down "+str$(x%)+","+str$(y%)
  2d_poly_from x%,y%
  if checked(11)=0 then 2d_image_copy 2,0,0,width(1),height(1)
  display
  on_mouse_move 1,move
  return

up:
  off_mouse_move 1
  return

move:
  off_mouse_move 1
    x1% = mouse_x_position(1)
    y1% = mouse_y_position(1)
    caption 0,"move "+str$(x1%)+","+str$(y1%)
    if checked(11)=1
      2d_poly_to x1%,y1%
    end_if
    if checked(12)=1
      2d_image_paste 2,0,0
      2d_poly_from x%,y%
      2d_poly_to x%,y1%
      2d_poly_to x1%,y1%
      2d_poly_to x1%,y%
      2d_poly_to x%,y%
    end_if
    if checked(13)=1
      2d_image_paste 2,0,0
      2d_rectangle x%,y%,x1%,y1%
    end_if
    display
  on_mouse_move 1,move
  return
C'est plus simple et cela améliore la situation,, mais ce n'est pas une solution pour autant. Ce qui se passe, c'est que le programme repart en ligne 1, comme lors d'un démarrage initial ! C'est complètement anormal; et je pense qu'il s'agit bien d'un bug au niveau de la gestion des évènements MOUSE_MOVE et MOUSE_UP. MOUSE_DOWN n'est pas concerné. Il faudrait que Jack puisse jeter un coup d'oeil...

EDIT

J'ai ajouté un message qui prouve le redémarrage anormal !
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
JL35




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

Sortie de Sub intempestive Empty
MessageSujet: Re: Sortie de Sub intempestive   Sortie de Sub intempestive EmptyMer 1 Mar 2017 - 16:56

Merci Klaus d'avoir regardé, ça me rassure (si on peut dire...), il n'y a pas que moi.
Et je pense effectivement à un bug dans le traitement de ces fonctions, même dans le programme principal (en non pas seulement dans une sub, comme je l'ai cru).
Et ton code le met bien en évidence.

J'espère que Jack pourra y jeter un coup d'oeil, parce que ces fonctions sont vraiment intéressantes.

Merci à toi en tout cas.
Revenir en haut Aller en bas
silverman

silverman


Nombre de messages : 970
Age : 52
Localisation : Picardie
Date d'inscription : 18/03/2015

Sortie de Sub intempestive Empty
MessageSujet: Re: Sortie de Sub intempestive   Sortie de Sub intempestive EmptyMer 1 Mar 2017 - 23:19

Voici un code qui fonctionne parfaitement;
Code:
message "démarrage"
label down, up, move
dim x%, y%, x1%, y1%
picture 1 : full_space 1 : height 1,height(1)-40 : top 1,40
image 2
option 11 : top 11,10 : left 11,10 : caption 11,"Dessin libre"
option 12 : top 12,10 : left 12,100 : caption 12,"Rectangle"
option 13 : top 13,10 : left 13,190 : caption 13,"Rectangle plein"
mark_on 12
2d_target_is 1
on_mouse_down 1,down
' on_mouse_up 1,up
end

down:
  off_mouse_down 1
  x% = mouse_x_left_down(1)
  y% = mouse_y_left_down(1)
  caption 0,"down "+str$(x%)+","+str$(y%)
  2d_poly_from x%,y%
  if checked(11)=0 then 2d_image_copy 2,0,0,width(1),height(1)
  display
  on_mouse_move 1,move
  return

up:
  return

move:
if mouse_left_up(1)=0   :' bouton gauche de la souris pas relaché
  off_mouse_move 1
    x1% = mouse_x_position(1)
    y1% = mouse_y_position(1)
    caption 0,"move "+str$(x1%)+","+str$(y1%)
    if checked(11)=1
      2d_poly_to x1%,y1%
    end_if
    if checked(12)=1
      2d_image_paste 2,0,0
      2d_poly_from x%,y%
      2d_poly_to x%,y1%
      2d_poly_to x1%,y1%
      2d_poly_to x1%,y%
      2d_poly_to x%,y%
    end_if
    if checked(13)=1
      2d_image_paste 2,0,0
      2d_rectangle x%,y%,x1%,y1%
    end_if
    display
  on_mouse_move 1,move
else
  off_mouse_move 1
  on_mouse_down 1,down
end_if

  return
La ligne 12 et son évènement associé ne servent plus à rien, mais si on enlève le 'rem', ça crash. C'est comme si il se produisait un évènement dans l'évènement.
Revenir en haut Aller en bas
JL35




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

Sortie de Sub intempestive Empty
MessageSujet: Re: Sortie de Sub intempestive   Sortie de Sub intempestive EmptyMer 1 Mar 2017 - 23:39

Merci silverman, intéressant, je vais regarder ça de près, mais peut-être pas avant demain.
Revenir en haut Aller en bas
papydall

papydall


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

Sortie de Sub intempestive Empty
MessageSujet: Re: Sortie de Sub intempestive   Sortie de Sub intempestive EmptyJeu 2 Mar 2017 - 0:00

Ajouter au s/p up :

Code:

Off_mouse_up 1

… et ça ne crash plus.
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Klaus

Klaus


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

Sortie de Sub intempestive Empty
MessageSujet: Re: Sortie de Sub intempestive   Sortie de Sub intempestive EmptyJeu 2 Mar 2017 - 0:02

Parfait, Silverman ! Tu as mis le doigt sur une solution du problème. Je garde.

Ceci dit, j'aimerais bien comprendre pourquoi la solution avec ON_MOUSE_UP ne marche pas...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Contenu sponsorisé





Sortie de Sub intempestive Empty
MessageSujet: Re: Sortie de Sub intempestive   Sortie de Sub intempestive Empty

Revenir en haut Aller en bas
 
Sortie de Sub intempestive
Revenir en haut 
Page 1 sur 2Aller à la page : 1, 2  Suivant
 Sujets similaires
-
» Sortie de la version V 0.9.17
» Sortie d'une procédure
» Erreur sortie de SUB
» Récupérer la sortie d'un programme lancé par EXECUTE_WAIT ?

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: