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

Tcl/Tk Discussion :

Tableau en argument de procédure


Sujet :

Tcl/Tk

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ingénieur Systèmes Embarqués
    Inscrit en
    Février 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35

    Informations professionnelles :
    Activité : Ingénieur Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2013
    Messages : 8
    Points : 8
    Points
    8
    Par défaut Tableau en argument de procédure
    Bonjour, je viens vers vous car j'ai un petit problème pour passer un tableau en argument d'une procédure.

    J'ai par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    set tab(0) A
    set tab(1) B
    set tab(2) C
    set tab(3) D
     
    proc test {tab} {
         for {set i 0} {$i <= 3} {incr i} {
              puts $tab($i)
         }
    }
    test $tab
    Et sa ne marche pas, j'ai un message d'erreur comme quoi "can't read "tab": variable is array"

    J'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    set tab(0) A
    set tab(1) B
    set tab(2) C
    set tab(3) D
     
    proc test {tab} {
         upvar $tab tab2
         for {set i 0} {$i <= 3} {incr i} {
              puts $tab2($i)
         }
    }
    test $tab
    Mais toujours rien.

    Quelqu'un aurait une solution svp ?

    Merci .

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

    Tu ne peux pas passer un tableau à une procédure juste par son nom. L'astuce consiste à passer le contenu du tableau en argument (avec [array get]) puis à reconstruire le tableau dans ta procédure (avec [array set]) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    set tab(0) A
    set tab(1) B
    set tab(2) C
    set tab(3) D
     
    proc test {tablist} {
         array set tab $tablist
         for {set i 0} {$i <= 3} {incr i} {
              puts $tab($i)
         }
    }
     
    test [array get tab]

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Ingénieur Systèmes Embarqués
    Inscrit en
    Février 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35

    Informations professionnelles :
    Activité : Ingénieur Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2013
    Messages : 8
    Points : 8
    Points
    8
    Par défaut
    C'est parfait merci beaucoup !

  4. #4
    Invité
    Invité(e)
    Par défaut
    De rien !

    Il n'y a plus qu'à passer le sujet en [résolu].

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

Discussions similaires

  1. passage d'un tableau en argument dans une procédure
    Par cati_78 dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 23/11/2008, 18h11
  2. Tableau en argument de procédure
    Par Tellounet dans le forum ASP
    Réponses: 6
    Dernier message: 11/06/2008, 14h11
  3. Passer une valeur Null dans un argument de procédure
    Par preempalver dans le forum VBA Access
    Réponses: 5
    Dernier message: 30/12/2003, 20h52
  4. passage d'argument à la procédure main ()
    Par Zazeglu dans le forum C
    Réponses: 5
    Dernier message: 01/09/2003, 19h59
  5. fonction renvoyant un tableau en argument
    Par Jones dans le forum Langage
    Réponses: 6
    Dernier message: 30/09/2002, 18h20

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