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 :

Problème d'enregistrement de données d'application [Débutant]


Sujet :

Interfaces Graphiques

  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 319
    Points : 843
    Points
    843
    Par défaut Problème d'enregistrement de données d'application
    Bonjour,

    Un petit problème d'enregistrement se pose à moi. Afin de ne pas utiliser de variables globales, je passe par des handles. Le souci est qu'il ne reconnait pas mon enregistrement dans ma fonction personnalisé, mais MatLab le reconnait dans l'initialisation de la figure ainsi que dans le callback.

    Voici le code pour parler plus clair :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    function main
    %Main GUI figure, initialization code
    [...]
       data=guihandles(gcf);
       data.left_space = left_space;
       guidata(gcf,data);
    
       data.left_space  %OK!
    end
    
    
    function charger_fichier(currentObj, event)
    [...]
       waitbar_handle = waitbar(1/3, 'Veuillez patientez svp');
       data=guihandles(gcbf);
       x = data.left_space  %OK!
    
       resize_ecran1(1);
    [...]
    end
    
    
    function resize_ecran1(windows)
    %This functions resizes first ecran mode.
    
    switch windows
        case 1
            data = guihandles(gcbf);
            x = data.left_space  %Erreur ...
    [...]
    end
    L'erreur généré est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    ??? Reference to non-existent field 'left_space'.
     
    Error in ==> main>resize_ecran1 at 775
            X_position = data.left_space;
     
    Error in ==> main>charger_fichier at 658
                        resize_ecran1(1);
     
    ??? Error while evaluating uimenu Callback

    MatLab reconnait pourtant la variable dans les cas précédents ... Ais-je loupé un coche quelque part ?

  2. #2
    Membre éclairé Avatar de tubaas
    Homme Profil pro
    Acousticien
    Inscrit en
    Août 2009
    Messages
    641
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Acousticien
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 641
    Points : 825
    Points
    825
    Par défaut
    salut
    sûrement que gcbf n'est pas le bon à cet endroit (je dirais qu'il ne devrait pas être reconnu mais l'erreur est étrange).
    tu peux essayer avec gcf.
    sinon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    hfig = figure(...);
    setappdata(0, 'HANDLE_FIGURE', hfig);
     
    function resize_ecran1(windows)
    [...]
       data=guihandles(getappdata(0, 'HANDLE_FIGURE'));
       x = data.left_space  %OK!
    [...]
    end

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 319
    Points : 843
    Points
    843
    Par défaut
    Bonjour tubaas,

    Un détail que j'ai oublié de préciser est que j'utilise une "waitbar" juste avant l'appel à ma fonction (rajouté au code au-dessus). Si j'utilise GCF, aucun des composants de ma fenêtre principale n'est reconnu.

    Je viens d'essayer ta proposition mais elle me renvoie la même erreur ... et pourtant, tous les composants de ma figure principale sont bien reconnus !

  4. #4
    Membre éclairé Avatar de tubaas
    Homme Profil pro
    Acousticien
    Inscrit en
    Août 2009
    Messages
    641
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Acousticien
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 641
    Points : 825
    Points
    825
    Par défaut
    salut
    t'as essayé de refaire un copier-coller du nom de ta variable.
    desfois ça change les choses...
    sinon tu peux essayer de le passer en argument de ta fonction en attendant de trouver la raison.

    edit : tu utilises le debuger pour voir le contenu de ta variable data dans le workspace ?

  5. #5
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 319
    Points : 843
    Points
    843
    Par défaut
    Re-bonjour,

    La variable est orthographiée correctement
    J'avoue ne pas vraiment utiliser de debuger autre que l'affichage des variables fautives ...

    Toujours est-il que ta seconde proposition marche très bien, j'aurais dû y penser plus tôt. On ne va pas s'enquiquiner pour pareil histoire.

    Pour moi c'est résolu

  6. #6
    Membre éclairé Avatar de tubaas
    Homme Profil pro
    Acousticien
    Inscrit en
    Août 2009
    Messages
    641
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Acousticien
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 641
    Points : 825
    Points
    825
    Par défaut
    Citation Envoyé par Vampirella
    La variable est orthographiée correctement
    parfois ça ne suffit pas quand elle a été mal orthographiée auparavant ça m'est arrivé quelquefois, j'aurais juré que c'était la même orthographe et pourtant il ne voulait pas.
    un copier-coller du désespoir et hop tout repart dans le bon sens.
    J'avoue ne pas vraiment utiliser de debuger autre que l'affichage des variables fautives ...
    il te faut metre des breakpoints dans l'éditeur matlab, tu cliques dans la colonne de gauche ou F12 ou menu debug set/clear breakpoints. après avec le menu debug ou F10, F11, F5 tu parcours ton programme.
    tu peux regarder l'état de ton workspace à chaque étape (dans la fenêtre principale de Matlab). là tu verras ta variable data, tu double-clique dessus et elle s'affichera dans le variable editor...
    tu peux ainsi voir si elle a bien le champ que tu veux

    edit : dans la doc tu as une page "Editing and debugging M-files"

  7. #7
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 319
    Points : 843
    Points
    843
    Par défaut
    Merci pour l'explication du debuger, je l'utiliserai comme ça, je n'ai plus d'excuses.

    Pour revenir sur l'erreur, elle vient du fait qu'il faut faire dans la fonction resize :
    et non "guihandles".

  8. #8
    Membre éclairé Avatar de tubaas
    Homme Profil pro
    Acousticien
    Inscrit en
    Août 2009
    Messages
    641
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Acousticien
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 641
    Points : 825
    Points
    825
    Par défaut
    ah oui tout à fait j'avais pas fait attention
    mais ça ne devrait pas être bon alors dans la fonction précédente non plus (charger_fichier) ?

  9. #9
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 319
    Points : 843
    Points
    843
    Par défaut
    Le plus bizarre, c'est que si, ça me le détectait ...

    Mais bon, je n'utilise pas cette variable dans "charger_fichier", c'était histoire de faire une trace.

    Merci encore de ton aide si rapide

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 20/11/2010, 02h29
  2. [MySQL] problème d'enregistrement des données
    Par johan0510 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 08/03/2010, 10h26
  3. [C#] Problème pour enregistrer les données
    Par MFree dans le forum ASP.NET
    Réponses: 2
    Dernier message: 07/12/2007, 13h32
  4. Problème d'enregistrement de données
    Par mystikgirl30 dans le forum IHM
    Réponses: 12
    Dernier message: 22/05/2007, 08h16
  5. Réponses: 18
    Dernier message: 10/07/2006, 13h42

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