IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Interfaces Graphiques Discussion :

Valeur de handler fausse


Sujet :

Interfaces Graphiques

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 134
    Par défaut Valeur de handler fausse
    Bonjour,
    Je ne savais vraiment où mettre cette discussion...

    J'ai codé une gui à la main.
    dans cette gui, il y a une figure et deux boutons.
    Le bouton 'b1' appelle une fonction 'fct_1' et 'b2' appelant 'fct_2'.

    Mon problème :
    je clique sur le 'b1' : très bien,
    puis je clique sur 'b2' : toujours très bien.
    je clique de nouveau sur 'b1' : ça plante.

    Voila, une partie du code (c'est dans un même fichier) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    function MonInterface
    	%figure
    	%bouton 'b1' avec callback sur 'fct_1'
    	%bouton 'b2' avec callback sur 'fct_2'
     
    	data = guihandles (gcf);
     
    	data.h = 0;
     
    	guidata(gcf, data);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    function fct_1 (obj, evt)
        data = guidata(gcbf);
        % traitements
        % nécessite l'appel de fct_2
        guidata(gcbf, data);
            disp(data.h); % 26.005
        fct_2;
            disp(data.h); % 26.005
        guidata(gcbf, data);
            disp(data.h); % 26.005
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    function fct_2 (obj, evt)
        data = guidata(gcbf);
        % traitements
            disp(data.h); % 26.005
        % destruction data.h
        % création data.h
    	disp(data.h); % 26.0051
        guidata(gcbf, data);
            disp(data.h); % 26.0051
    Mes tests m'ont mené à supprimer la ligne 9 de la fonction fct_1 : ça ne plante plus.

    Question 1 :
    Pourquoi la data de la fonction fct_1 contient elle une ancienne valeur pour le handler 'h', alors qu'elle est mise à jour dans fct_2 ?
    Question 2 :
    Pour ne pas mettre une ancienne valeur du handler 'h', je ne termine pas la fonction par une sauvegarde de la data.
    Est il grave si fct_1 ne se termine pas par une sauvegarde de la data ?

    Je vous remercie pour vos réponses

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Parce que tu ne recharges pas ton data après l'appel de fct_2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function fct_1 (obj, evt)
        data = guidata(gcbf);
        % traitements
        % nécessite l'appel de fct_2
        guidata(gcbf, data);
            disp(data.h); % 26.005
        fct_2;
        data = guidata(gcbf);
            disp(data.h); % 26.005
        guidata(gcbf, data);
            disp(data.h); % 26.005

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 134
    Par défaut
    Effectivement, ça marche, je sais pas pourquoi j'y ai pas pensé :s.
    Je te remercie.

    Et puis au moins, la fonction est terminée correctement, ça me semble plus propre.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. valeurs fausses des DateTimePickers
    Par ned_kelly dans le forum VB.NET
    Réponses: 5
    Dernier message: 28/05/2009, 00h41
  2. valeur de retour d'un handler
    Par TheDrev dans le forum wxWidgets
    Réponses: 0
    Dernier message: 04/02/2008, 18h31
  3. Réponses: 2
    Dernier message: 08/10/2007, 10h35
  4. Valeurs fausses ou manquantes
    Par FranT dans le forum JDBC
    Réponses: 2
    Dernier message: 24/09/2007, 10h21
  5. [DEBUTANT] Valeur fausse
    Par bdaboah dans le forum C
    Réponses: 2
    Dernier message: 18/09/2005, 15h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo