Feldbeschreibung einer Strucktur in Variable an Funktion übergeben und dort wieder für Zugriff nutzen

 
Hallo,

ich habe eine Frage weil mir google dazu keine Antwort lieferte.

Ich möchte den Namen eines Feldes aus einer Struktur in einer variablen speichern, diese an eine Funktion übergeben und dann damit innerhalb der funktion gezielt auf das Feld zugreifen.

Beispiel

struct struct_array                                      
{  
   int      ticketid;
   int      field1; 
   double   field2; 
   double   field3; 
}
struct_array = my_array[]; 

//zwischenzeitlich wird das Array mit Inhalten gefüllt...

//dann kommt die Funktion der ich ein gewünschtes Feld aus der Struktur als String übergebe

string return_content_of_struct(string fieldname, int key){

        //nun würde ich gernde mit "fieldname" auf den Inhalt des Arrays zugreifen weiß aber nicht wie, zur Verdeutlichung folgendes
        return my_array[key].fieldname;

        //Das funktioniert natürlich so nicht, weil es so aussieht als ob ich auf ein nicht existierendes Element namens "fieldname" zugreifen möchte.
}  

//Aufruf mit dem gewünschten Feld field1 im Array Index 0
string result = return_content_of_struct("field1", 0); 

Wäre soetwas möglich, ist der Syntax dann vielleicht anders oder gibt es eine spezielle Funktion dafür, dass der eigentliche Feldname aus der Variable zu interpretieren ist?

 

Du kannst in MQl5 den Namen einer Variablen ausdrucken:

#define TOSTRING(v) (#v+":"+(string)(v))+" " // prints vraiable name + value:  int varA = 5; Print(TOSTRING(varA)); => "varA:5 "
 

Hallo @Carl Schreiber

danke für die prompte Antwort.

Ich habe das jetzt mal in verschiedenen Konsterlationen probiert

#define TOSTRING(v) ((string)(v)) //hier soll nur der Inhalt der variable ausgegeben werden

if(my_working_array[i2].TOSTRING(field)==pos_ticket){...}

da bekomme ich immer die Meldung "'(' - undeclared identifier"

Ich finde in der DOKU keinen Eintrag zu "tostring" - kannst du mir vielleicht nochmals einen Anstups geben!?

 
ReLor #:

Hallo @Carl Schreiber

danke für die prompte Antwort.

Ich habe das jetzt mal in verschiedenen Konsterlationen probiert

da bekomme ich immer die Meldung "'(' - undeclared identifier"

Ich finde in der DOKU keinen Eintrag zu "tostring" - kannst du mir vielleicht nochmals einen Anstups geben!?

Ich denke, das, was Du willst geht nicht, meine Lösung funktioniert nur beim Druck.  Du kannst nicht den Inhalt einer string-Variable als Variablennamen verwenden.

 
Schade habs befürchtet. Danke!
Grund der Beschwerde: