2010-05-10 9 views
5

Si j'ai une structure avec un nom de champ 'fieldname', est-il possible d'accéder aux données dans ce champ en utilisant seulement la variable?IDL: Accès aux champs struct en utilisant les noms de champs stockés dans des variables?

ie.

x = 'fieldname'

est-il possible de faire

data = struct. (X) d'une certaine façon? Je veux utiliser la chaîne dans x comme nom de champ.

+1

Sympa de voir un autre programmeur IDL sur SO! Peut-être qu'un jour nous pourrons récupérer notre étiquette de nos programmeurs CORBA ... –

Répondre

7

Oui, cela est possible grâce à la fonction TAG_NAMES:

tnames=TAG_NAMES(struct) 
tindex=WHERE(STRCMP(tnames,'fieldname') EQ 1) 
data=struct.(tindex) 

L'appel à TAG_NAMES retourne un tableau de chaînes représentant les balises définies dans struct. L'instruction WHERE renvoie l'index dans tnames d'une chaîne correspondant à 'fieldname'. Enfin, l'index est passé à l'opération struct.(tindex), qui extrait un champ par son index de balise numérique.

Bien sûr, dans une application réelle que vous voudriez vérifier si tindex a été avec succès à quelque chose correspondait, sinon IDL étouffer la recherche de la structure avec un indice de -1.

Questions connexes