2010-05-10 10 views
5

Wenn ich eine Struktur mit einem Feldnamen 'Feldname' habe, ist es möglich, auf die Daten in diesem Feld nur mit der Variablen zuzugreifen?IDL: Zugriff auf Strukturfelder mithilfe von Feldnamen, die in Variablen gespeichert sind?

dh.

x = 'Feldname'

ist es möglich,

data = Struktur zu tun. (X) in irgendeiner Weise? Ich möchte die Zeichenfolge in x als Feldname verwenden.

+1

Schön, einen anderen IDL-Programmierer auf SO zu sehen! Vielleicht können wir eines Tages "unser" Tag von solchen CORBA-Programmierern zurückfordern .... –

Antwort

7

Ja, das ist möglich, unter Verwendung der TAG_NAMES Funktion:

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

Der Aufruf von TAG_NAMES gibt ein Array von Zeichenketten, die die in struct definiert Tags. Die WHERE-Anweisung gibt den Index in tnames einer Zeichenfolge zurück, die 'fieldname' entspricht. Schließlich wird der Index an die Operation struct.(tindex) übergeben, die ein Feld durch seinen numerischen Tag-Index extrahiert.

Natürlich in einer realen Anwendung Sie wollen würden prüfen, ob tindex erfolgreich etwas angepasst, sonst IDL wird Drossel auf der Struktur-Lookup mit einem Index von -1.

Verwandte Themen