Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: pouvez-vous me dire pourquoi ce code plante. (Résolu) Lun 12 Oct 2015 - 20:44 | |
| Bonjour à tous, Tout est dans le titre, ça sent le bug (à moins que quelque chose m'échappe). ATTENTION: Ce code Plante (du moins chez moi), préparer votre tueur de tâche... - Code:
-
label change check 1 : caption 1,"Check 1" mark_on 1 on_click 1, change
END
change: if checked(1)=1 then mark_off 1 if checked(1)=0 then mark_on 1 RETURN
Je suis à peu près certain que ça marchait avant la version actuelle (V0.9.26). Si quelqu'un d'entre-vous possède la version précédente (même une version instantanée) je suis preneur. Car je commence à avoir de sérieux doutes sur la version actuelle. A+
Dernière édition par Jean Claude le Mar 13 Oct 2015 - 7:35, édité 1 fois | |
|
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: pouvez-vous me dire pourquoi ce code plante. (Résolu) Lun 12 Oct 2015 - 21:07 | |
| Bonsoir Jean Claude, Effectivement ça plante... c'est pourtant simple...
Mais une question: pourquoi faire mark_on ou mark_off, quand tu cliques sur le check, il change automatiquement de nature au clic ? Tu me diras, ce n'est pas ça la question...
Ca paraît même un peu tordu: - il est à 1, tu cliques, il passe automatiquement à 0, tu vas dans le s/p change qui donc le trouve à 0 et le repasse à 1, et tout ça se passe en même temps, ça doit se mélanger les pinceaux... et je me demande si c'était le but cherché. | |
|
Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: pouvez-vous me dire pourquoi ce code plante. (Résolu) Lun 12 Oct 2015 - 21:27 | |
| Bonsoir, Je pense que la remarque de JL35 est très judicieuse : Double commande donc plantage... SUB donc inutile que j'ai quand même conservé pour mes tests : - Code:
-
label menu check 1 caption 1,"Check 1" ' mark_on 1 on_click 1, menu
END
menu: if checked(1)=1 then print "OK" if checked(1)=0 then print "PAS OK" RETURN Et je n'ai plus de plantage. J'ai besoin d'un coup de main aussi, j'ouvre un autre sujet... | |
|
Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: pouvez-vous me dire pourquoi ce code plante. (Résolu) Lun 12 Oct 2015 - 21:47 | |
| Merci à vous deux,
En fait cette case à cocher est prévu pour un enregistrement ultérieur de sa condition CHECKED(N)=1 ou 0. Exemple: pour un mot de passe si elle est cochée alors le programme charge automatiquement le mot de passe dans un edit (en SECRET_ON bien sur). Et l'utilisateur peut la décocher ou la cocher pour annuler ou pas la mémorisation du mot de passe et enregistrer la nouvelle condition dans un fichier.
J'ai recherché dans mes codes (car j'ai déjà utilisé cette méthode de mémorisation) et il est vrai que je ne l'ai pas fait de la même manière. J'étais dans le style de Marc37.
J'abandonne cette façon de faire.... Mais je ne vois pas pourquoi ça ne marche pas.
A+ | |
|
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: pouvez-vous me dire pourquoi ce code plante. (Résolu) Mar 13 Oct 2015 - 1:28 | |
| Pourquoi ça ne marche pas ? Simple ! Lorsque tu cliques sur la case, la coche de la case s'inverse. Mais parallèlement, l'évènement on_click se déclenche et la case est repositionnée dans son état inverse (état avant le clic). Or, ceci déclence le même évènement, avant que la routine change ait pu faire son return. Et ainsi de suite, indéfiniment, par elle ne passera plus par son return. Et donc, à un moment, il y a violation de mémoire caril y a dépassement de pile. Essaie ceci - tu verras mieux ce qui se passe: - Code:
-
label change check 1 : caption 1,"Check 1" mark_on 1 on_click 1, change
END
change: off_click 1 if checked(1)=1 then mark_off 1 if checked(1)=0 then mark_on 1 on_click 1, change RETURN En fait, pour ton histoire de mot de passe, il ne faut surtotu pas faire d'évènement on_click sur le combo. Simplement, au moment de décider quoi faire avec le mot de passe, tu interroges la combo par la fonction checked(1) qui te retourne l'information dont tu as besoin. | |
|
Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: pouvez-vous me dire pourquoi ce code plante. (Résolu) Mar 13 Oct 2015 - 7:35 | |
| Je regrette d'avoir posté ce sujet, car en y regardant bien le code n'est pas cohérent.
Mon code, tel que je l'ai présenté, fonctionne bien à condition de remplacer Mark_on et Mark_off par une variable qui sera enregistrée. Ensuite au démarrage du programme cette variable servira à cocher ou pas le Check (c'est à ce moment là que Mark_on et Mark_off sont utile)
Désolé de vous avoir fait perdre votre temps.
A+ | |
|
Contenu sponsorisé
| Sujet: Re: pouvez-vous me dire pourquoi ce code plante. (Résolu) | |
| |
|