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 :

Acceder à une Variable persistent


Sujet :

Interfaces Graphiques

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2011
    Messages : 12
    Par défaut Acceder à une Variable persistent
    Bonjour,

    Je voudrais avoir accès aux données d'une variable déclarée "persistent" depuis plusieurs fonctions que j'ai écrite dans le même fichier .m

    Pour tester cela :
    je fais un code dans une fonction pour afficher un message que j'ai stocké dans une variable "persistent" au début de mon fichier .m.

    Mais quand j'affiche la variable à l'aide d'un msgbox dans la fonction, il me dit que la variable est pas défini.
    Pourtant c'est une variable déclarée persistent, plus haut dans le fichier .m


    voici mon code.
    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
     
     
    function varargout = testCarte(varargin)
     
    global XY;
    persistent T;
    T='test';
     
     
    gui_Singleton = 1;
    gui_State = struct('gui_Name',       mfilename, ...
                       'gui_Singleton',  gui_Singleton, ...
                       'gui_OpeningFcn', @testCarte_OpeningFcn, ...
                       'gui_OutputFcn',  @testCarte_OutputFcn, ...
                       'gui_LayoutFcn',  [] , ...
                       'gui_Callback',   []);
    if nargin && ischar(varargin{1})
        gui_State.gui_Callback = str2func(varargin{1});
    end
    if nargout
        [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
    else
        gui_mainfcn(gui_State, varargin{:});
    end
     
     
    %%%Fonction qui affiche la variable persistent T%%%
    function mnuMacro3_Callback(hObject, eventdata, handles)
     
    msgbox(T);
    Merci de votre aide.

    Ridy

  2. #2
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Par défaut
    Bonjour,

    C'est normal, une variable persistent est une variable qui garde sa valeur entre 2 appels à la fonction (comme un static en C ou Java si tu connais). Ca ne permet absolument pas d'accéder à cette variable depuis une autre fonction.

    Ce que tu veux utiliser dans ton cas c'est apparemment une variable globale (ce qui est mal au passage, il y a d'autres méthodes plus robustes pour transmettre les variables).

    Duf

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2011
    Messages : 12
    Par défaut
    Bonjour,

    Merci duf42 pour ta réponse.
    Ok, je comprend maintenant mon erreur.
    En ce qui concerne la méthode plus robuste, elle consiste en quoi?

    Ridy

  4. #4
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Par défaut
    Elles sont décrites dans ce tutoriel.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2011
    Messages : 12
    Par défaut
    Merci pour le lien.
    J'ai l'option d'utiliser soit le setappdata ou bien le handles.

    Pour ceux qui veulent stocké des valeurs dans une variable puis y accéder à partir de n'importe quel endroit dans votre programme Matlab, vous pouvez utiliser setappdata ou bien handles.
    (voir le lien plus haut pour plus de précision.).

    Ridy

  6. #6
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Par défaut
    Personnellement, pour les données j'utilise SETAPPDATA.
    Je réserve les handles aux objets graphiques.

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

Discussions similaires

  1. Acceder à une variable avec une autre variable
    Par kisscoool dans le forum ActionScript 3
    Réponses: 4
    Dernier message: 21/05/2008, 12h52
  2. Acceder à une variable d'application depuis un dll
    Par Arthis dans le forum ASP.NET
    Réponses: 2
    Dernier message: 18/01/2008, 17h34
  3. Acceder à une variable membre
    Par buzzkaido dans le forum C++
    Réponses: 8
    Dernier message: 29/10/2007, 17h40
  4. Réponses: 3
    Dernier message: 09/10/2007, 14h24
  5. Réponses: 9
    Dernier message: 20/03/2006, 16h51

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