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 :

Redéclaration de variable


Sujet :

Interfaces Graphiques

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Par défaut Redéclaration de variable
    Bonjour,

    J'ai un fichier .m dans lequel il n'y a que mon code d'interface.
    Dans un second fichier .m j'appelle ce fichier:

    Dans ce fichier interface tous mes uicontrol sont placés dans des variables pour pouvoir les retrouver facilement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function interface
       global UI
       UI.monobjet = uicontrol ...
    Ensuite, je rappelle à nouveau ce second fichier .m (et ainsi l'interface), donc les variables UI correspondantes sont déjà déclarées. Normalement, elles devraient être remplacées, mais j'ai toujours un, et un seul doublon qui se créé.

    En effet, si au rechargement je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    findobj('Tag', 'letagobj')
    interface;
    findobj('Tag', 'letagobj')
    ça va me retourner:
    466,0055
    % et ensuite:
    466,0055
    584,0014
    Un élément se duplique, sans raison apparente... Et aucun autre!
    Y aurait-il un shaman qui pourrait lever cette malédiction?

    Merci

  2. #2
    Expert confirmé
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Par défaut
    Bonjour,

    Bon je suppose qu'on t'a déjà dit que les variables globales c'est le mal ?


    Sinon, là avec ton appel tu recrées manifestement ton interface à chaque appel.

    Tu devrais mettre un test au début de ta fonction interface du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Si mon GUI n'existe pas
       le créer
    finsi
    la suite

  3. #3
    Membre éprouvé
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Par défaut
    Je me dis que quand les variables globales sont bien traitées ça peut aller

    Finalement j'ai bien fait ça, si l'interface existait je l'ai supprimée et ça fonctionne.

    Petite question du coup, qu'est ce qui est mieux: associer des variables à chaque uiontrol utile, ou le chercher par findobj et le tag?

    Merci

  4. #4
    Expert confirmé
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Par défaut
    Avec FINDOBJ tu as toujours un risque potentiel que le résultat ne soit pas unique.
    Avec des variables c'est toi qui gères tes petites affaires donc normalement tu sais ce que tu fais
    (Mais les globales ça reste le mal...Alors qu'il y a d'autres solutions tous aussi simples et beaucoup plus propres et moins risquées)

  5. #5
    Membre éprouvé
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Par défaut
    D'accord, merci. Mais en terme de rapidité rien de plus palpitant d'un côté que de l'autre?
    Sinon c'est vrai que je galère un peu avec les variables globales, mais comme je reprends un programme, je dois m'adapter, tout reprendre serait impossible

  6. #6
    Expert confirmé
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Par défaut
    En terme de rapidité FINDOBJ sera plus lent (un appel de fonction est plus lent qu'un appel de variable).

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

Discussions similaires

  1. [VBA-A] Redéclarer un variable global
    Par sabes dans le forum VBA Access
    Réponses: 4
    Dernier message: 09/06/2006, 19h00
  2. variables locales ou globales ???
    Par elvivo dans le forum C
    Réponses: 13
    Dernier message: 03/07/2002, 09h22
  3. Procédure avec un nombre variable d'arguments
    Par charly dans le forum Langage
    Réponses: 15
    Dernier message: 21/06/2002, 12h08
  4. Réponses: 4
    Dernier message: 05/06/2002, 15h35
  5. les variables globales static
    Par gRRosminet dans le forum C
    Réponses: 8
    Dernier message: 27/04/2002, 09h34

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