bignono
Nombre de messages : 1127 Age : 66 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: No Corresponding END_WHILE found V 0.9.23i5 Lun 27 Fév 2012 - 16:19 | |
| Bonjour Jack, Je pense qu'il y a un bug avec la version 0.9.23i5 de Panoramic. Comme tu sais, j'ai découvert comment avoir un double clic en panoramic (voir mon post EURÉKA Le double clic!!!) Dans le programme suivant, j'ai juste implanté la routine du double clic, sans m'en servir. Lorsque je commande au menu "Tracer rectangle", je clique sur mon picture, je maintiens le bouton de la souris enfoncé, je trace mon rectangle, puis je relache le bouton afin que la suite du programme se déroule, et j'obtiens l'erreur suivante: "(66) No Corresponding END_WHILE found. Line:19". Hors, en ligne 19 c'est le début de ma routine "cliquer" pour le double clic. Parfois j'arrive à tracer un rectangle sans problème, mais au 2ème ça plante! J'ai bien dans mon programme autant de while que de end_while. A tout hasard, j'ai essayé ce même programme avec la version 0.9.23i4, et pas de bug, ni d'erreurs. tout se passe bien, je trace les rectangles sans problèmes. - Code:
-
dim xa%,ya%,xb%,yb%,xc%,yc%,xd%,yd%,xe%,ye%,xf%,yf%,xp%,yp%,xv%,yv% dim lg%,ha%,dh%,a,k,pi,mx,my,x1%,y1%,x2%,y2%,ka%,j,clic label pos_souris,trace,calcul_points,fin,cliquer
full_space 0:picture 1:full_space 1::on_click 1,cliquer
color 1,100,0,0
image 100 pi=4*atn(1):ha%=300:dh%=ha%/2:2d_target_is 1
main_menu 10 sub_menu 11:parent 11,10:caption 11,"Trace rectangle":on_click 11,trace on_close 0,fin
end
' Routine de détection du double clic cliquer: wait 120:' <=== Valeur à ajuster (j'obtiens de bon résultats entre 100 et 200) if scancode=1 then clic=clic+1 if scancode=1 then clic=clic+1 ' if clic=1 then print "simple clic!" ' if clic=2 then print "double clic!" clic=0 return
pos_souris: 2d_fill_color 255,255,100 print_locate xp%-20,yp%-30:print "x=";str$(xp%);" y=";str$(yp%) wait 200 return
trace: 2d_image_copy 100,0,0,width(1),height(1) cursor_cross 1 print_target_is 1 repeat xd%=mouse_x_position(1):yd%=mouse_y_position(1) if xd%<>xp% or yd%<>yp% 2d_image_paste 100,0,0 xp%=xd%:yp%=yd%:gosub pos_souris end_if until (mouse_left_down(1)=1 and mouse_left_up(1)=0) 2d_image_paste 100,0,0:2d_image_copy 100,0,0,width(1),height(1) 2d_pen_color 0,0,0:2d_pen_width 2 while mouse_left_up(1)=0 xf%=mouse_x_position(1):yf%=mouse_y_position(1) lg%=sqr(power(xf%-xd%,2)+power(yd%-yf%,2)) if xf%<>xv% or yf%<>yv% 2d_image_paste 100,0,0:gosub calcul_points 2d_line xa%,ya%,xe%,ye%:2d_poly_to xc%,yc%:2d_poly_to xb%,yb%:2d_poly_to xa%,ya% xv%=xf%:yv%=yf%:xp%=xf%:yp%=yf% print_locate xp%-20,yp%-60:print "Angle: ";str$(wrap_value(a));"°";" Épaisseur= ";str$(ha%) print_locate xp%-20,yp%-45:print "Longueur= ";str$(lg%) gosub pos_souris:wait 100 end_if end_while 2d_image_paste 100,0,0 if lg%<>0 ' Nettoyage 2d_pen_color 255,255,255:2d_pen_width 2 for j=-1*dh% to dh% x1%=xd%-j*sin(k):y1%=yd%-j*cos(k) x2%=x1%+lg%*cos(k):y2%=y1%-lg%*sin(k) 2d_line x1%,y1%,x2%,y2% next j ' Trace rectangle final 2d_pen_color 0,0,0 2d_line xa%,ya%,xe%,ye%:2d_poly_to xc%,yc%:2d_poly_to xb%,yb%:2d_poly_to xa%,ya% mx=(xd%+xf%)/2:my=(yd%+yf%)/2:2d_fill_cross:2d_flood mx,my,0,0,255 end_if cursor_arrow 1 return
calcul_points: if xf%>xd% k=atn((yd%-yf%)/(xf%-xd%)):a=k*180/pi:a=int(a*100)/100 end_if if xf%<xd% k=atn((yd%-yf%)/(xf%-xd%)):a=k*180/pi:a=int(a*100)/100:a=180+a:k=k+3.14 end_if if xd%=xf% if yf%<yd% then a=90:k=1.57 if yf%>yd% then a=270:k=4.71 end_if xa%=xd%-dh%*sin(k):ya%=yd%-dh%*cos(k): ' point A xe%=xd%+dh%*sin(k):ye%=yd%+dh%*cos(k): ' point E xc%=xe%+lg%*cos(k):yc%=ye%-lg%*sin(k): ' point C xb%=xa%+lg%*cos(k):yb%=ya%-lg%*sin(k): ' point B return
fin: terminate Voilà, c'était pour t'informer. Cordialement. | |
|
JL35
Nombre de messages : 7095 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: No Corresponding END_WHILE found V 0.9.23i5 Lun 27 Fév 2012 - 18:02 | |
| Effectivement, j'ai aussi eu exactement cette même erreur avec mon programme de dessin, comme si on sortait au milieu de la boucle While sans qu'elle soit finie pour se retrouver sur une étiquette... et c'est là que Panoramic détecte qu'on n'a pas exécuté le End_While... Je n'ai pas réussi à comprendre pourquoi, la structure est correcte, et il n'y avait pas de points de sortie entre le while et le end_while, j'avais mis ça sur le compte de l'intervention du timer, mais sans conviction. Mais c'est bizarre, moi aussi c'est quand j'ai introduit ton astuce de tirer une figure à la souris pour la dessiner... , c'est à dire avec les multiples image_copy et image_paste, il y a des moments où ça ne suit pas ? | |
|
bignono
Nombre de messages : 1127 Age : 66 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Re: No Corresponding END_WHILE found V 0.9.23i5 Lun 27 Fév 2012 - 19:43 | |
| Bonsoir JL35, Oui, c'est pour ça que je te conseille de reprendre la version 0.9.23i4. Tu verras que le bug n'existe pas avec cette version. Elle fonctionne super bien. J'ai abandonné l'autre pour continuer mon programme j'utilise la 0.9.23i4. Tu devrais en faire autant pour améliorer ton programme de dessin. A+ PS: L'apéro m'appelle | |
|
JL35
Nombre de messages : 7095 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: No Corresponding END_WHILE found V 0.9.23i5 Mar 28 Fév 2012 - 1:21 | |
| Pour moi l'apéro s'est un peu prolongé... pour le moment ce problème (le no end_while !) ne me gêne pas beaucoup, c'est très épisodique, alors c'est le statu quo, et comme je n'ai pas d'améliorations à faire pour le moment ...! | |
|
lodchjo
Nombre de messages : 162 Age : 53 Localisation : Anvers Date d'inscription : 26/12/2011
| Sujet: Re: No Corresponding END_WHILE found V 0.9.23i5 Mar 28 Fév 2012 - 9:17 | |
| J'ai fait plusieurs essays, mais j'ai pas eu cet erreur. (Win XP). Etrange. De toute façon, le programme marche bien! Juste par curiosité: est-ce qu'il y a un moyen pour changer l'épaisseur? A+! Lode | |
|