2010-05-10 33 views
5

Nếu tôi có cấu trúc với tên trường 'tên trường', có thể truy cập dữ liệu trong trường đó bằng chỉ sử dụng biến không?IDL: Truy cập các trường struct sử dụng tên trường được lưu trữ trong các biến?

tức là.

x = 'fieldname'

là nó có thể làm

data = struct (x). Một cách nào đó? Tôi muốn sử dụng chuỗi trong x là tên trường.

+1

Rất vui khi thấy một lập trình viên IDL khác trên SO! Có lẽ một ngày nào đó chúng ta có thể lấy lại thẻ 'của chúng ta' từ những người lập trình CORBA ... –

Trả lời

7

Có, đây là có thể sử dụng các chức năng TAG_NAMES:

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

Các cuộc gọi đến TAG_NAMES trả về một mảng các chuỗi đại diện cho các thẻ quy định tại struct. Câu lệnh WHERE trả về chỉ mục trong tnames của chuỗi phù hợp với 'fieldname'. Cuối cùng, chỉ mục được chuyển đến hoạt động struct.(tindex), thao tác này trích xuất một trường theo chỉ số thẻ số . Tất nhiên, trong một ứng dụng thực tế bạn muốn kiểm tra xem tindex đã thành công phù hợp với điều gì đó hay không, nếu không IDL sẽ bị nghẹt thở trong việc tra cứu cấu trúc với chỉ mục của -1.

Các vấn đề liên quan