2010-05-10 16 views
5

Se ho una struct con un fieldname 'nomecampo', è possibile accedere ai dati in quel campo usando solo la variabile?IDL: accesso ai campi struct usando i nomi dei campi memorizzati nelle variabili?

ie.

x = 'fieldname'

è possibile fare

data = struct. (X) in qualche modo? Voglio usare la stringa in x come nome del campo.

+1

Bello vedere un altro programmatore IDL su SO! Forse un giorno potremo reclamare il "nostro" tag da artisti del calibro di quei programmatori CORBA .... –

risposta

7

Sì, questo è possibile tramite la funzione TAG_NAMES:

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

La chiamata a TAG_NAMES restituisce un array di stringhe che rappresentano i tag definiti in struct. L'istruzione WHERE restituisce l'indice in tnames di una stringa corrispondente a 'fieldname'. Infine, l'indice viene passato all'operazione struct.(tindex), che estrae un campo da all'indice di tag numerici.

Naturalmente, in una vera e propria applicazione che ci si vuole verificare se tindex era successo abbinato a qualcosa, altrimenti IDL sarà soffocare la ricerca la struttura con un indice di -1.

Problemi correlati