silverman
Nombre de messages : 970 Age : 52 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: démonstration de 6 bugs en 1 code !!! Ven 22 Fév 2019 - 16:41 | |
| Bonjour à tous Voici un code qui reproduit des bugs de commandes d'évènement et j'aimerais savoir si vous obtenez les mêmes résultats que moi avant de poster ça dans la rubrique des bugs. Il suffit de modifier la variable de la ligne 7: - Code:
-
label affiche dim i,choix
memo 1 : full_space 1 : set_focus 1
' évènement à choisir: choix=2
select choix ' case 1 : on_activate 1,affiche case 2 : on_change 1,affiche :' appuyez plusieurs fois la touche "espace" jusqu'à l'apparition du compteur, puis cliquez la croix en faut et à droite pour quitter --->crash case 3 : on_click 1,affiche :' ras ' case 4 : on_close 1,affiche case 5 : on_double_click 1,affiche :' ras case 6 : on_key_down 1,affiche :' idem "on_change" case 7 : on_key_up 1,affiche :' idem "on_change" case 8 : on_mouse_down 1,affiche :' cliquez 1 ou plusieurs fois --->erreur "label defined twice" puis crash case 9 : on_mouse_move 1,affiche :' bougez la souris --->crash case 10: on_mouse_up 1,affiche :' idem "on_mouse_down" ' case 11: on_resize 1,affiche ' case 12: on_show 1,affiche ' case 13: on_timer 1,affiche ' case 14: on_user_event 1,affiche end_select
' les bugs semblent apparaitre parcequ'un évènement est déclenché avant que la commande END à été atteinte pause 2000
END affiche: select choix ' case 1 : off_activate 1 case 2 : off_change 1 case 3 : off_click 1 ' case 4 : off_close 1 case 5 : off_double_click 1 case 6 : off_key_down 1 case 7 : off_key_up 1 case 8 : off_mouse_down 1 case 9 : off_mouse_move 1 case 10: off_mouse_up 1 ' case 11: off_resize 1 ' case 12: off_show 1 ' case 13: off_timer 1 ' case 14: off_user_event 1 end_select ' i=i+1 : caption 0,str$(i) ' select choix ' case 1 : on_activate 1,affiche case 2 : on_change 1,affiche case 3 : on_click 1,affiche ' case 4 : on_close 1,affiche case 5 : on_double_click 1,affiche case 6 : on_key_down 1,affiche case 7 : on_key_up 1,affiche case 8 : on_mouse_down 1,affiche case 9 : on_mouse_move 1,affiche case 10: on_mouse_up 1,affiche ' case 11: on_resize 1,affiche ' case 12: on_show 1,affiche ' case 13: on_timer 1,affiche ' case 14: on_user_event 1,affiche end_select return On tombe souvent sur ces bugs, espérons qu'avec cette démonstration simple, jack pourra enfin leur tordre le cou! Ce sont les commandes les plus courantes qui sont testées, c'est pour cela que certaines sont en REMark. | |
|
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: démonstration de 6 bugs en 1 code !!! Ven 22 Fév 2019 - 19:31 | |
| Effectivement, la commande PAUSE empêche le code Panoramic de s'exécuter, alors que les évènements continuent à être traités (voir l'aide de la comande PAUSE !). Si l'on met PAUSE en commentaire, tout marche bien. En voici une version simplifiée qui montre le problème pour MOUSE_DOWN - Code:
-
label affiche dim i
memo 1 : full_space 1 : set_focus 1 on_mouse_down 1,affiche :' cliquez 1 ou plusieurs fois --->erreur "label defined twice" puis crash
' les bugs semblent apparaitre parcequ'un évènement est déclenché avant que la commande END à été atteinte pause 2000
END
affiche: off_mouse_down 1 i=i+1 : caption 0,str$(i) on_mouse_down 1,affiche return
Conclusion: faire tous les ON_xxx juste avant la commande END. Mais sur le fond, il s'agit bien d'un problème mais qui n'est pas un simple bug. Pour corriger cela, il faudrait que Jack revoie en profondeur le traitement des évènements dans Panoramic ! | |
|
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: démonstration de 6 bugs en 1 code !!! Ven 22 Fév 2019 - 23:19 | |
| Salut tout le monde
Actions des commandes pause et wait La commande PAUSE N arrête l'exécution du programme pendant N millisecondes. Les actions en attente sont effectuées. La commande WAIT N gèle l'exécution du programme pendant N millisecondes. Les actions en attente ne sont pas effectuées.
@Klaus Dans ton code change pause 2000 par wait 2000 et observe le comportement du programme : il n’y a plus d’erreur "label defined twice" ni de crash ! | |
|
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: démonstration de 6 bugs en 1 code !!! Sam 23 Fév 2019 - 0:42 | |
| Je sais bien, Papydall. La commande PAUSE ne vient pas de moi, mais du code initial de Silverman. Et he pense qu'il a mis cette commande en lieu et place d'un long code Panoramic qui doit s'exécuter, et qui pose problème avec la gestion des évènements. C'est juste une "maquette" pour mettre le problème en évidence sans publier des tartines de code. | |
|
Contenu sponsorisé
| Sujet: Re: démonstration de 6 bugs en 1 code !!! | |
| |
|