2010-05-10 6 views
5

Si tengo una estructura con un nombre de campo 'nombre de campo', ¿es posible acceder a los datos en ese campo utilizando solo la variable?IDL: ¿Accediendo a campos de estructura usando nombres de campo almacenados en variables?

es decir.

x = 'nombre de campo'

es posible hacer

datos = struct. (X) de alguna manera? Quiero usar la cadena en x como el nombre del campo.

+1

¡Es bueno ver a otro programador de IDL en SO! Tal vez algún día podamos reclamar 'nuestra' etiqueta de los gustos de aquellos programadores de CORBA ... –

Respuesta

7

Sí, esto es posible mediante la función TAG_NAMES:

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

La llamada a TAG_NAMES devuelve una matriz de cadenas que representan las etiquetas definidas en struct. La instrucción WHERE devuelve el índice en tnames de una cadena que coincide con 'fieldname'. Finalmente, el índice se pasa a la operación struct.(tindex), que extrae un campo por su índice de etiqueta numérica.

Por supuesto, en una aplicación real que te gustaría comprobar si se tindex éxito igualaron a algo, de lo contrario IDL se ahogue en la estructura de las operaciones de búsqueda con un índice de -1.

Cuestiones relacionadas