Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| sub, timer et boucle repeat... | |
| | Auteur | Message |
---|
bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: sub, timer et boucle repeat... Dim 17 Fév 2013 - 12:31 | |
| Bonjour à tous Je travaille sur un petit programme dans lequel j'éprouve de grandes difficultés. Un bout de code vaut mieux qu'un long discours: - Code:
-
dim cx,cy,cz,px,py,pz,i,t,n% label clr1,clr2,prog full_space 0:scene3d 1:top 1,30:width 1,width(0)-16:height 1,height(0)-68:light_position 0,0,-5 t=1000:n%=6
3d_plane 2:3d_x_rotate 2,90:3d_scale 2,10000,10000,1:3d_color 2,0,100,0
3D_CYLINDER 6,4,1,1:3d_position 6,0,2.2,0:3d_scale 6,0.75,1,0.5 3D_sphere 7,1.5:3d_position 7,0,1.5,0:3d_x_rotate 7,180:3d_hide 7 3D_cube 8,2:3d_position 8,0,1.25,0:3d_hide 8 3D_cone 9,4,1:3d_position 9,0,2,0:3d_hide 9
3d_text 11,"" cx=0:cy=1.7:cz=5:px=0:py=1.7:pz=0 cam_position cx,cy,cz:point_position px,py,pz
' ****************************************************************************** ' choix():' <== ICI LE PROGRAMME NE PLANTE PAS, MAIS MES OBJETS SONT SANS COULEUR ET NON ANIMÉS. ' ******************************************************************************
timer 6:timer_interval 6,t :on_timer 6,clr1 timer 7:timer_interval 7,200:timer_off 7:on_timer 7,clr2
' ****************************************************************************** choix():' <== ICI LE PROGRAMME PLANTE MAIS MES OBJETS SONT COLORÉS ET ANIMÉS ' ******************************************************************************
timer 8:timer_interval 8,1:on_timer 8,prog: ' une fois le choix fait, le programme démarre end
prog: timer_off 8 print_locate 10,10:print t timer_on 8 return
sub choix() selection() repeat select scancode case 37:' flèche gauche n%=n%-1:if n%<6 then n%=9 selection() case 39:' flèche droite n%=n%+1:if n%>9 then n%=6 selection() end_select until scancode=13 or scancode=32 end_sub
sub selection() dim_local a$,x,ii% data "<CYLINDRES>",-3.25,6,"< SPHERES >",-3.3,7,"< CUBES >",-2.625,8,"< CONES >",-2.5,9 for ii%=6 to 9:3d_hide ii%:next ii% restore:for ii%=1 to n%-5:read a$:read x:read n%:next ii% 3d_show n%:3d_text_change 11,a$:3d_position 11,x,5,0:3d_color 11,rnd(n%*10*abs(x)),rnd(n%*10*abs(x)),rnd(n%*10*abs(x)) pause 200 end_sub
clr1: timer_off 6:3d_color n%,200,0,0:t=int(rnd(2000))+1000:timer_interval 6,t:timer_on 7:return
clr2: timer_off 7:3d_color n%,0,0,200:timer_on 6:return
Dans ce code, je voudrais que la sub choix() soit executé avec mon animation flash couleurs bleu/rouge, mais ça plante. Avant les 2 timers 6 et 7, ça fonctionne mais mes objets sont noirs et sans animations. Je ne comprends pas pourquoi et je n'arrive pas à trouver une solution de contournement. Si quelqu'un peut m'aider... A+ | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Dim 17 Fév 2013 - 14:24 | |
| Je ne sais pas d'où vient ton problème et je pense que cela dépasse mes compétences. Mais il est arrivé à faire planter l'éditeur Panoramic J'ai dû redémarrer mon ordi pour que tout rentre dans l'ordre. | |
| | | Invité Invité
| Sujet: Re: sub, timer et boucle repeat... Dim 17 Fév 2013 - 15:37 | |
| Bonjour, Je poste maintenant car ce n'est pas fini, mais je dois partir, et si dès fois tu vois un problème par rapport à ce que j'ai mis. Je me demande si il n'y a pas un problème de structure. En effet tu appel un sub choix() avec une pause de 200, et tout de suite après tu mets un timer pour lancer le programme. J'avais mis t%(10) pour voir si un timer est actif ou non, en le mettant à jour. n'est pas mis à 1 car ensuite j'ai mis timer_off_all. En y réfléchissant un peu je pense que cela permet de donner une piste. J'ai refais une indentation, car je ne comprenais pas. - Code:
-
dim cx,cy,cz,px,py,pz,i,t,n% , t%(10) label clr1,clr2,prog full_space 0:scene3d 1:top 1,30:width 1,width(0)-16:height 1,height(0)-68:light_position 0,0,-5 t=1000:n%=6
3d_plane 2:3d_x_rotate 2,90:3d_scale 2,10000,10000,1:3d_color 2,0,100,0
3D_CYLINDER 6,4,1,1:3d_position 6,0,2.2,0:3d_scale 6,0.75,1,0.5 3D_sphere 7,1.5:3d_position 7,0,1.5,0:3d_x_rotate 7,180:3d_hide 7 3D_cube 8,2:3d_position 8,0,1.25,0:3d_hide 8 3D_cone 9,4,1:3d_position 9,0,2,0:3d_hide 9
3d_text 11,"" cx=0:cy=1.7:cz=5:px=0:py=1.7:pz=0 cam_position cx,cy,cz:point_position px,py,pz
' ****************************************************************************** ' choix():' <== ICI LE PROGRAMME NE PLANTE PAS, MAIS MES OBJETS SONT SANS COULEUR ET NON ANIMÉS. ' ******************************************************************************
timer 6:timer_interval 6,t :on_timer 6,clr1 :t%(6)=0 timer 7:timer_interval 7,200:timer_off 7:on_timer 7,clr2:timer_off_all
' ******************************************************************************
choix():' <== ICI LE PROGRAMME PLANTE MAIS MES OBJETS SONT COLORÉS ET ANIMÉS ' ****************************************************************************** message "on lit timer 8" ' il y a une pause de 200 dans selection, donc .... Y a-t-il une mauvaise conception timer 8:timer_interval 8,2:on_timer 8,prog: ' une fois le choix fait, le programme démarre end
prog: timer_off 8 print_locate 10,10:print t
return
sub choix() timer_off_all selection()
repeat select scancode case 37:' flèche gauche n%=n%-1:if n%<6 then n%=9 selection() case 39:' flèche droite n%=n%+1:if n%>9 then n%=6 timer_off_all selection() end_select until scancode=13 or scancode=32 if t%(6)=1 then timer_on 6 if t%(7)=1 then timer_on 7 end_sub
sub selection() dim_local a$,x,ii% data "<CYLINDRES>",-3.25,6,"< SPHERES >",-3.3,7,"< CUBES >",-2.625,8,"< CONES >",-2.5,9 for ii%=6 to 9:3d_hide ii%:next ii% restore:for ii%=1 to n%-5:read a$:read x:read n%:next ii% 3d_show n%:3d_text_change 11,a$:3d_position 11,x,5,0:3d_color 11,rnd(n%*10*abs(x)),rnd(n%*10*abs(x)),rnd(n%*10*abs(x)) pause 200 end_sub
clr1: caption 0,"timer_on 6" timer_off 6:t%(6)=0:3d_color n%,200,0,0:t=int(rnd(2000))+1000:timer_interval 6,t:timer_on 7: t%(7)=1 :return
clr2: caption 0,"timer 7" timer_off 7:t%(7)=0:3d_color n%,0,0,200:timer_on 6:t%(6)=1:return
Je suis désolé de ne pas pouvoir aller jusqu'au bout. |
| | | Invité Invité
| Sujet: Re: sub, timer et boucle repeat... Dim 17 Fév 2013 - 17:23 | |
| Une solution qui marche, et sans timer: - Code:
-
dim cx,cy,cz,px,py,pz,i,t,n% , t%(10) , c% label clr1,clr2, selection_ , choix full_space 0:scene3d 1:top 1,30:width 1,width(0)-16:height 1,height(0)-68:light_position 0,0,-5 t=1000:n%=6
3d_plane 2:3d_x_rotate 2,90:3d_scale 2,10000,10000,1:3d_color 2,0,100,0
3D_CYLINDER 6,4,1,1:3d_position 6,0,2.2,0:3d_scale 6,0.75,1,0.5 3D_sphere 7,1.5:3d_position 7,0,1.5,0:3d_x_rotate 7,180:3d_hide 7 3D_cube 8,2:3d_position 8,0,1.25,0:3d_hide 8 3D_cone 9,4,1:3d_position 9,0,2,0:3d_hide 9
3d_text 11,"" cx=0:cy=1.7:cz=5:px=0:py=1.7:pz=0 cam_position cx,cy,cz:point_position px,py,pz
' ****************************************************************************** ' choix():' <== ICI LE PROGRAMME NE PLANTE PAS, MAIS MES OBJETS SONT SANS COULEUR ET NON ANIMÉS. ' ******************************************************************************
' il y a une pause de 200 dans selection, donc .... Y a-t-il une mauvaise conception ' timer 8:timer_interval 8,2:on_timer 8,prog:timer_off 8: ' une fois le choix fait, le programme démarre ' ******************************************************************************
gosub choix:' <== ICI LE PROGRAMME PLANTE MAIS MES OBJETS SONT COLORÉS ET ANIMÉS ' ****************************************************************************** ' timer_on 8 end
return
choix: selection()
repeat if c%<0 then gosub clr1 : else : gosub clr2 c%=c%+1:pause 10:if c%=20 then c%= -20 select scancode case 37:' flèche gauche n%=n%-1:if n%<6 then n%=9 gosub selection_ case 39:' flèche droite n%=n%+1:if n%>9 then n%=6 timer_off_all gosub selection_ end_select until scancode=13 or scancode=32 return ' ..................................
selection_: caption 0,"selection" selection() caption 0,"retour" return
sub selection()
dim_local a$,x,ii% data "<CYLINDRES>",-3.25,6,"< SPHERES >",-3.3,7,"< CUBES >",-2.625,8,"< CONES >",-2.5,9 for ii%=6 to 9:3d_hide ii%:next ii% restore:for ii%=1 to n%-5:read a$:read x:read n%:next ii% 3d_show n%:3d_text_change 11,a$:3d_position 11,x,5,0:3d_color 11,rnd(n%*10*abs(x)),rnd(n%*10*abs(x)),rnd(n%*10*abs(x)) pause 200 end_sub
clr1: 3d_color n%,200,0,0:t=int(rnd(2000))+1000 :return
clr2: 3d_color n%,0,0,200:return
|
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: sub, timer et boucle repeat... Dim 17 Fév 2013 - 18:17 | |
| Voici ma solution qui ressemble fortement à celle de Cosmos70 - Code:
-
dim cx,cy,cz,px,py,pz,i,t,n%,c% full_space 0:scene3d 1:top 1,30:width 1,width(0)-16:height 1,height(0)-68:light_position 0,0,-5 t=1000:n%=6
3d_plane 2:3d_x_rotate 2,90:3d_scale 2,10000,10000,1:3d_color 2,0,100,0
3D_CYLINDER 6,4,1,1:3d_position 6,0,2.2,0:3d_scale 6,0.75,1,0.5 3D_sphere 7,1.5:3d_position 7,0,1.5,0:3d_x_rotate 7,180:3d_hide 7 3D_cube 8,2:3d_position 8,0,1.25,0:3d_hide 8 3D_cone 9,4,1:3d_position 9,0,2,0:3d_hide 9
3d_text 11,"" cx=0:cy=1.7:cz=5:px=0:py=1.7:pz=0 cam_position cx,cy,cz:point_position px,py,pz
Choix() : message "OK" end ' ****************************************************************************** SUB choix() selection() repeat if c% < 0 then clr1() : else : clr2() c% = c% + 1 : wait 30 : if c% = 20 then c% = -20 select scancode case 37 : n% = n% - 1 : if n% < 6 then n% = 9 selection() case 39 : n% = n% + 1 : if n% > 9 then n% = 6 selection() end_select until scancode = 13 or scancode = 32 END_SUB ' ****************************************************************************** sub selection() dim_local a$,x,ii% data "<CYLINDRES>",-3.25,6,"< SPHERES >",-3.3,7,"< CUBES >",-2.625,8,"< CONES >" ,-2.5,9 for ii%=6 to 9:3d_hide ii%:next ii% restore:for ii%=1 to n%-5:read a$:read x:read n%:next ii% 3d_show n%:3d_text_change 11,a$:3d_position 11,x,5,0:3d_color 11,rnd(n%*10*abs(x)),rnd(n%*10*abs(x)),rnd(n%*10*abs(x)) pause 200 end_sub ' ****************************************************************************** SUB clr1() 3d_color n%,200,0,0 : t = int(rnd(2000))+1000 END_SUB ' ****************************************************************************** SUB clr2() 3d_color n%,0,0,200 END_SUB ' ******************************************************************************
| |
| | | Invité Invité
| Sujet: Re: sub, timer et boucle repeat... Dim 17 Fév 2013 - 18:38 | |
| Bien, je reviens à la charge, non pas pour remettre en doute la solution de Papydall, mais pour évoquer un problème. D'ailleurs si j'ai regardé ce programme, car j'avais le même problème avec Pagiciel, et j'ai voulu voir de près.
Tant que j'ai essayé de gardé sub choix(), à chaque fois quoique je fasse, j'avais le message d'erreur de repeat. Lorsque que j'ai transformé sub choix() en sous-programme: choix avec return, cette erreur s'est arrêtée. Il y a une mauvaise interaction des timers avec les sub(). Je l'ai déjà constaté plusieurs fois.
Une fois débarrassé des timer dans ce cas, certains sous-programmes, peuvent être transformés en procédures. |
| | | bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Re: sub, timer et boucle repeat... Dim 17 Fév 2013 - 19:44 | |
| Bonsoir cosmos et papydall, Je viens de rentrer et je vois donc vos messages. Effectivement vos solutions fonctionnent, mais ne me conviennent pas! En effet, ces timers sont indispensables car ils appellent des animations bien précises de manières plus ou moins régulières. C'est pourquoi il y a un timer_interval avec une valeur aléatoire "t" dans mon programme exemple. Mon vrai programme comporte en fait pour le momment 9 timers dont un commande le début du programme (jeu), et les autres appellent des animations ou actions bien précises pendant le déroulement du jeu. Je devrais même encore créer d'autres timer pour d'autres animations et actions. Je pense que cosmos a mis le doigt sur ce que je crois être un problème avec les sub! - Citation :
- D'ailleurs si j'ai regardé ce programme, car j'avais le même problème avec Pagiciel, et j'ai voulu voir de près.
- Citation :
- Lorsque que j'ai transformé sub choix() en sous-programme: choix avec return, cette erreur s'est arrêtée. Il y a une mauvaise interaction des timers avec les sub(). Je l'ai déjà constaté plusieurs fois.
Donc pour mon programme, je crois que je vais abandonner toutes les sub et me remettre uniquement à programmer en mode évènementiel pour ne plus avoir ce problème. C'est dommage, car les sub me faisait gagner énormément de lignes de programme! Merci, et à + | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: sub, timer et boucle repeat... Dim 17 Fév 2013 - 21:06 | |
| @Bignono: Les SUB ne sont pas en cause !Le problème vient de l'interruption d'une boucle REPEAT par un timer. Et c'est un problème dont Jack devrait s'occuper. J'ai simplement remplacé ta boucle REPEAT_UNTIL par un label, un IF et un GOTO. Et ça marche. comme quoi, même avec les SUB, les timers fonctionnent. Voici le code: - Code:
-
dim cx,cy,cz,px,py,pz,i,t,n% label clr1,clr2,prog label klaus1 full_space 0:scene3d 1:top 1,30:width 1,width(0)-16:height 1,height(0)-68:light_position 0,0,-5 t=1000:n%=6
3d_plane 2:3d_x_rotate 2,90:3d_scale 2,10000,10000,1:3d_color 2,0,100,0
3D_CYLINDER 6,4,1,1:3d_position 6,0,2.2,0:3d_scale 6,0.75,1,0.5 3D_sphere 7,1.5:3d_position 7,0,1.5,0:3d_x_rotate 7,180:3d_hide 7 3D_cube 8,2:3d_position 8,0,1.25,0:3d_hide 8 3D_cone 9,4,1:3d_position 9,0,2,0:3d_hide 9
3d_text 11,"" cx=0:cy=1.7:cz=5:px=0:py=1.7:pz=0 cam_position cx,cy,cz:point_position px,py,pz
' ****************************************************************************** ' choix():' <== ICI LE PROGRAMME NE PLANTE PAS, MAIS MES OBJETS SONT SANS COULEUR ET NON ANIMÉS. ' ******************************************************************************
timer 6:timer_interval 6,t :on_timer 6,clr1 timer 7:timer_interval 7,200:timer_off 7:on_timer 7,clr2
' ****************************************************************************** choix():' <== ICI LE PROGRAMME PLANTE MAIS MES OBJETS SONT COLORÉS ET ANIMÉS ' ******************************************************************************
timer 8:timer_interval 8,1:on_timer 8,prog: ' une fois le choix fait, le programme démarre end
prog: timer_off 8 print_locate 10,10:print t timer_on 8 return
sub choix() selection() ' repeat klaus1: select scancode case 37:' flèche gauche n%=n%-1:if n%<6 then n%=9 selection() case 39:' flèche droite n%=n%+1:if n%>9 then n%=6 selection() end_select ' until scancode=13 or scancode=32 if scancode=13 then exit_sub if scancode=32 then exit_sub goto klaus1 end_sub
sub selection() dim_local a$,x,ii% data "<CYLINDRES>",-3.25,6,"< SPHERES >",-3.3,7,"< CUBES >",-2.625,8,"< CONES >",-2.5,9 for ii%=6 to 9:3d_hide ii%:next ii% restore:for ii%=1 to n%-5:read a$:read x:read n%:next ii% 3d_show n%:3d_text_change 11,a$:3d_position 11,x,5,0:3d_color 11,rnd(n%*10*abs(x)),rnd(n%*10*abs(x)),rnd(n%*10*abs(x)) pause 200 end_sub
clr1: timer_off 6:3d_color n%,200,0,0:t=int(rnd(2000))+1000:timer_interval 6,t:timer_on 7:return
clr2: timer_off 7:3d_color n%,0,0,200:timer_on 6:return
EDIT Je m'y suis mis, car j'utilise des timers avec des SUB sans problème, et ton histoire m'a intrigué. Donc, maintenant, la balle est dans le camp de Jack. Je n'ose pas encore qualifier cela de bug, mais c'est anormal qu'un évènement ne puisse pas interrompre une boucle repeat, alors qu'une boucle programmée de façon classique ne pose pas de problème. Il y a bien un problème avec REPEAT. | |
| | | bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Re: sub, timer et boucle repeat... Dim 17 Fév 2013 - 23:29 | |
| Bonsoir Klaus, Oui effectivement c'est la boucle repeat qui ne va pas avec le timer! Tu as raison Klaus, mais moi je pensais que c'était les sub comme celle-ci sont récentes dans panoramic. Bon j'ai supprimé toutes les boucles repeat et while de mon programme (jeu), ça a l'air de fonctionner sauf que maintenant j'ai plein d'accès violiation quand mon programme s'achève. Je vais chercher... A+ | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: sub, timer et boucle repeat... Dim 17 Fév 2013 - 23:33 | |
| As-tu des RETURN dans des SUB (au lieu des EXIT_SUB) ? Chez moi, les violations d'accès viennent souvent de là... | |
| | | bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Re: sub, timer et boucle repeat... Dim 17 Fév 2013 - 23:45 | |
| Non, je n'ai pas de return dans mes sub. | |
| | | Invité Invité
| Sujet: Re: sub, timer et boucle repeat... Lun 18 Fév 2013 - 7:23 | |
| Il y a quelque chose de bizarre. J'ai pas vérifié si par rapport à Klaus, j'ai modifié repeat par if comme dit Klaus: - Spoiler:
- Code:
-
dim cx,cy,cz,px,py,pz,i,t,n% label clr1,clr2,prog ,branche full_space 0:scene3d 1:top 1,30:width 1,width(0)-16:height 1,height(0)-68:light_position 0,0,-5 t=1000:n%=6
3d_plane 2:3d_x_rotate 2,90:3d_scale 2,10000,10000,1:3d_color 2,0,100,0
3D_CYLINDER 6,4,1,1:3d_position 6,0,2.2,0:3d_scale 6,0.75,1,0.5 3D_sphere 7,1.5:3d_position 7,0,1.5,0:3d_x_rotate 7,180:3d_hide 7 3D_cube 8,2:3d_position 8,0,1.25,0:3d_hide 8 3D_cone 9,4,1:3d_position 9,0,2,0:3d_hide 9
3d_text 11,"" cx=0:cy=1.7:cz=5:px=0:py=1.7:pz=0 cam_position cx,cy,cz:point_position px,py,pz
' ****************************************************************************** ' choix():' <== ICI LE PROGRAMME NE PLANTE PAS, MAIS MES OBJETS SONT SANS COULEUR ET NON ANIMÉS. ' ******************************************************************************
timer 6:timer_interval 6,t :on_timer 6,clr1 timer 7:timer_interval 7,200:timer_off 7:on_timer 7,clr2
' ****************************************************************************** choix():' <== ICI LE PROGRAMME PLANTE MAIS MES OBJETS SONT COLORÉS ET ANIMÉS ' ******************************************************************************
timer 8:timer_interval 8,1:on_timer 8,prog: ' une fois le choix fait, le programme démarre end
prog: timer_off 8 print_locate 10,10:print t timer_on 8 return
sub choix() selection() branche: ' repeat select scancode case 37:' flèche gauche n%=n%-1:if n%<6 then n%=9 selection() case 39:' flèche droite n%=n%+1:if n%>9 then n%=6 selection() end_select ' until scancode=13 or scancode=32 if scancode = 13 then exit_sub if scancode = 32 then exit_sub goto branche end_sub
sub selection() dim_local a$,x,ii% data "<CYLINDRES>",-3.25,6,"< SPHERES >",-3.3,7,"< CUBES >",-2.625,8,"< CONES >",-2.5,9 for ii%=6 to 9:3d_hide ii%:next ii% restore:for ii%=1 to n%-5:read a$:read x:read n%:next ii% 3d_show n%:3d_text_change 11,a$:3d_position 11,x,5,0:3d_color 11,rnd(n%*10*abs(x)),rnd(n%*10*abs(x)),rnd(n%*10*abs(x)) pause 200 end_sub
clr1: timer_off 6:3d_color n%,200,0,0:t=int(rnd(2000))+1000:timer_interval 6,t:timer_on 7:return
clr2: timer_off 7:3d_color n%,0,0,200:timer_on 6:return
La plupart du temps, lorsque je lance le programme, j'ai un message d'erreur: et j'ai l'éditeur avec la ligne d'erreur. Je reprends le jeu et cela marche avec bien du mal pour les couleur au début. Puis je ferme le programme. En fermant le message d'erreur, je me retrouve de nouveau avec le programme avec les couleurs et celui là marche normalement. J'ai bien reproduit 10 fois le phénomène. Lorsque j'ai le message d'erreur, j'ai 2 programmes de lancé. Celui qui marche mal en premier temps, puis une fois fermé, le second qui marche bien. |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: sub, timer et boucle repeat... Lun 18 Fév 2013 - 9:22 | |
| J'ai lancé ton code tel quel. Cela marche parfaitement. Une vingtaine de lancements et pas de problème.
Ceci dit, je rencontre ce problème de temps en temps, avec n'importe quel programme source Panoramic, en réalité. Plus fréquemment juste après le premier lancement de Panoramic, mais là encore, ce n'est pas systématique.
J'ai l'impression que la suite des évènements est celle-ci: 1 - on clique sur le bouton de lancement (l'éclair) 2 - Panoramic Editor crée un fichier Panoramic.exe , comme si l'on avait demandé de créer un EXE, sauf que dans ce cas, le fichier va dans un dossier temporaire 3 - Panoramic Editor lance l'exécution de ce fichier qu'il vient de créer 4 - Panoramic Editor attent un petit moment et essaye de récupérer le handle du process qu'il vient de lancer (ou croit avoir lancé). Ce handle servira à stopper le process lorsqu'on clique sur le menu Stop.
Maintenant, deux problèmes distincts peuvent se produire: A - Panoramic Editor a depuis toujours un problème avec la gestioin du répertoire par défaut, au début de son lancement. La preuve: lorsque je redémarre Wndows, puis lance PAnoramic Editor, puis charge un programme quelconque utilisant une DLL, puis je lance ce programme, j'ai infailliblement un message disant qu'il ne peut pas charger la DLL. Le stoppe le programme et relance immédiatement, et tout se passe bien. Et je cherche bien la DLL dans le dossier par défaut. Le même problème se manifeste peut-être lorsqu'il essaie de lancer Panoramic.exe en phase (3)...
B - En fonction de la charge momentanée du système, le process lancé en (3) n'est pas encore prêt dans Windows lorsque Panoramic Editoressaie d'avoir le handle en (4). Et il affiche ce fameux message. Or, le processus est bien lancé et s'appelle bien Panoramic.exe. Cela m'arrive souvent. | |
| | | Invité Invité
| Sujet: Re: sub, timer et boucle repeat... Lun 18 Fév 2013 - 9:44 | |
| Oui mais ce qui est curieux, c'est qu'avec un seul appel, j'ai 2 lancements lorsqu'il y a une erreur. Quand au message d'erreur, c'est régulier depuis quelque temps. Aussi pour ce seul message je ne réagis plus. La nouveauté, c'est les 2 appels chez moi (W7). |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: sub, timer et boucle repeat... Lun 18 Fév 2013 - 11:16 | |
| Salut tout le monde. Je crois aussi que le problème vient de l’instruction REPEAT. Avec IF comme l’a fait Cosmos70 ça marche. Ça marche aussi avec WHILE - Code:
-
dim cx,cy,cz,px,py,pz,i,t,n% label clr1,clr2,prog full_space 0:scene3d 1:top 1,30:width 1,width(0)-16:height 1,height(0)-68:light_position 0,0,-5 t=1000:n%=6
3d_plane 2:3d_x_rotate 2,90:3d_scale 2,10000,10000,1:3d_color 2,0,100,0
3D_CYLINDER 6,4,1,1:3d_position 6,0,2.2,0:3d_scale 6,0.75,1,0.5 3D_sphere 7,1.5:3d_position 7,0,1.5,0:3d_x_rotate 7,180:3d_hide 7 3D_cube 8,2:3d_position 8,0,1.25,0:3d_hide 8 3D_cone 9,4,1:3d_position 9,0,2,0:3d_hide 9
3d_text 11,"" cx=0:cy=1.7:cz=5:px=0:py=1.7:pz=0 cam_position cx,cy,cz:point_position px,py,pz
timer 6:timer_interval 6,t :on_timer 6,clr1 timer 7:timer_interval 7,200:timer_off 7:on_timer 7,clr2
choix() timer 8:timer_interval 8,1:on_timer 8,prog: ' une fois le choix fait, le programme démarre end ' ----------------------------------------------------------------------------- prog: timer_off 8 print_locate 10,10:print t timer_on 8 return ' ----------------------------------------------------------------------------- sub choix() selection() while scancode <> 13 and scancode <> 32 select scancode case 37:' flèche gauche n%=n%-1:if n%<6 then n%=9 selection() case 39:' flèche droite n%=n%+1:if n%>9 then n%=6 selection() end_select ' la ligne suivante n'a plus sa raison d'être ' if scancode = 13 or scancode = 32 then exit_sub end_while end_sub ' ----------------------------------------------------------------------------- sub selection() dim_local a$,x,ii% data "<CYLINDRES>",-3.25,6,"< SPHERES >",-3.3,7,"< CUBES >",-2.625,8,"< CONES >",-2.5,9 for ii%=6 to 9:3d_hide ii%:next ii% restore:for ii%=1 to n%-5:read a$:read x:read n%:next ii% 3d_show n%:3d_text_change 11,a$:3d_position 11,x,5,0:3d_color 11,rnd(n%*10*abs(x)),rnd(n%*10*abs(x)),rnd(n%*10*abs(x)) pause 200 end_sub
clr1: timer_off 6:3d_color n%,200,0,0:t=int(rnd(2000))+1000:timer_interval 6,t:timer_on 7:return
clr2: timer_off 7:3d_color n%,0,0,200:timer_on 6:return
@Cosmos 70 Je rencontre souvent le message d’erreur que tu as mentionné, parfois aussi une violation de la mémoire sans raison apparente ! . Je valide le message, je relance le programme et oh magie de l’incompréhensible tout marche à merveille ! Cette fois, ni ton code ni le mien ne m’ont honoré de ces message d’erreurs ! Allez savoir pourquoi. | |
| | | Invité Invité
| Sujet: Re: sub, timer et boucle repeat... Lun 18 Fév 2013 - 19:14 | |
| Apparemment j'ai l'impression d'être le seul à avoir un double lancement du programme en cas d'erreur au départ. J'ai généré une animation qui montre ce qui se passe pour montrer que c'est réel, et non sorti de mon imagination Voir sur le Webdav: panoramic@cosmos70 MDP: panoramic123 edit: fichier: doubleRUN en cas d'erreur.swf |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: sub, timer et boucle repeat... Lun 18 Fév 2013 - 20:58 | |
| Une question bête, Cosmos70, et ne le prends pas mal. C'est juste pour y voir plus clair.
Moi aussi, j'ai quelque fois des "double lancements", et je peux les provoquer à volonté avec n'importe quel programme, y compris le tien !
C'est parce que j'ai une souris dont le clic droit fait souvent de faux contacts, déclenchant ainsi un double-clic non intentionnel. Et si tu fais un double_clic sur l'éclair (Run), cela provoque exactement cela, et même des violations d'accès et autres joyeusetés.
Pour exclure ce problème, essaie de lancer ton programme en appuyant 1 fois sur la touche F9 au lieu d'utiliser le clic sur la flèche. Cela paraît bête, et je me plante probablement, mais en ce qui me concerne, c'est du vécu, et je peux le provoquer à volonté ! Essaie un vrai double-clic sur l'éclair avec un programme quelconque... | |
| | | Invité Invité
| Sujet: Re: sub, timer et boucle repeat... Lun 18 Fév 2013 - 21:42 | |
| - Citation :
- Une question bête, Cosmos70, et ne le prends pas mal
Pour quelle raison je le prendrais mal? Il n'y a pas de problème. Pour la démo, j'ai utilisé la souris pour que ce soit visuel, mais avec F9, je viens encore de le faire, j'ai le même résultat. A propos, je fais le réglage du simple clic pour lancer un programme. La souris ici n'a rien à voir. |
| | | Contenu sponsorisé
| Sujet: Re: sub, timer et boucle repeat... | |
| |
| | | | sub, timer et boucle repeat... | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |