Hello,
I have the following problem trying to get the values of structure members using "varget".
I have the following basic structure:
struct data_st {
matrix EON;
matrix MRR;
};
The structure instances are different countries: AT, BE, DE, etc.:
let CountryCode = "AT", "BE", "DE";
EonStr = ".EON";
MRRStr = ".MRR";
I am trying to access the structure member AT.EON by combining the country code and the structure instance via string concatenation:
i=1;
varNameEON = CountryCode[i] $+ EonStr;
VarEON = varget(varNameEON);
The last line of code results in the error
"(0) : error G0025 : 'AT.EON' : Undefined symbol".
Is there any other way how I could access the structure member by compiling its name from the structure instance name and the member name?
Thanks a lot in advance!
1 Answer
0
I think you would be better off making an array of structures and adding the country code as a structure member. For example, something like this:
//Create string array of country codes for example
string CountryCode = { "AT", "BE", "DE" };
//Define structure with CountryCode member
struct data_st {
matrix EON;
matrix MRR;
string CountryCode;
};
//Create structure instance
//replace my_data_st with a more meaningful name
struct data_st my_data_st;
//Reshape my_data_st to an array of structures
my_data_st = reshape(my_data_st, rows(CountryCode), 1);
//Fill in CountryCode member
for i(1, rows(CountryCode), 1);
my_data_st[i].CountryCode = CountryCode[i];
endfor;
Your Answer
1 Answer
I think you would be better off making an array of structures and adding the country code as a structure member. For example, something like this:
//Create string array of country codes for example
string CountryCode = { "AT", "BE", "DE" };
//Define structure with CountryCode member
struct data_st {
matrix EON;
matrix MRR;
string CountryCode;
};
//Create structure instance
//replace my_data_st with a more meaningful name
struct data_st my_data_st;
//Reshape my_data_st to an array of structures
my_data_st = reshape(my_data_st, rows(CountryCode), 1);
//Fill in CountryCode member
for i(1, rows(CountryCode), 1);
my_data_st[i].CountryCode = CountryCode[i];
endfor;
