silverman
Nombre de messages : 968 Age : 51 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: bug difficile à débusquer Dim 1 Juil 2018 - 10:05 | |
| Bonjour à tous Je viens de tomber sur un bug qui m'a donné du fil à retordre, en fait un double-bug devrais je dire Dans une procédure, suivant son temps de traitement (court ou long), j'ai obtenu soit le déclenchement d'un évènement non sollicité, soit l'erreur 68 (label is defined twice, line 1). Après investigation, la commande fautive est 'ON_MOUSE_UP' (mais j'ai aussi obtenu l'erreur 68 avec 'ON_MOUSE_DOWN' avec d'autres tests) Voici un code qui reproduit ce double bug. Dans l'open dialog, ouvrez un fichier en DOUBLE-CLIQUANT dessus (on ne peut pas empêcher un utilisateur de procéder ainsi ): - Code:
-
label charge,test full_space 0 dim a$,i,m open_dialog 100 m=10 : button 5 : caption 5,"ouvrir fichier" : on_click 5,charge
END test: message "Il y a eu doubleclick dans l'open_dialog, mais"+chr$(13)+chr$(10)+"AUCUN click dans ce memo!" return
charge: a$="" : a$=file_name$(100) : caption 0,a$ :' le doubleclick ne concerne que l'open_dialog puisque c'est à l'intérieur de celui ci que l'on doubleclick. make_memo() ' simulation d'un : code long à traiter = plantage (error 68) / code court à traiter = EVENT non sollicité for i=1 to 50 : caption 0,str$(i) : pause 10 : next i : hide m :' ligne à mettre en REM pour voir l'EVENT non sollicité se déclencher caption 0,"fini"+str$(m) return
sub make_memo() m=m+1 : memo m : full_space m on_mouse_up m,test end_sub tel que, on obtiens l'erreur 68, sinon mettre la ligne 17 en REM pour voir l'event non sollicité. | |
|