c'è qualche funzione "StringToEnum" o un'alternativa?

cyberglassed  

Ciao, se lo faccio

stringa a = EnumToString(MODE_SMMA);

ottengo:

a ="MODE_SMMA"

Ora, vorrei una funzione che faccia esattamente il contrario, voglio dire qualcosa come

int b = StringToEnum("MODE_SMMA");

b = 2

dove 2 è il valore int associato alla costante:"MODE_SMMA"


Saluti, cyberglassed.

Marco vd Heijden  
MODE_SMMA

è già il valore intero 2.

Print(IntegerToString(MODE_SMMA));
Marco vd Heijden  

Non c'è nessun StringToEnum.

MODE_SMMA

è già il valore intero 2.

   int b=MODE_SMMA;
   Print("b= ",b);



int b;

string StringToEnum="MODE_SMMA";

if(StringToEnum=="MODE_SMMA"){b=2;}

Print("b= ",b);



JD4  
cyberglassed:

Quello che dici non si adatta alle mie esigenze. Come puoi leggere nella mia domanda, so come convertire da valore enum a stringa, ma quello che voglio fare è proprio il contrario:

con il codice:

int b = StringToEnum("MODE_SMMA");

Voglio ottenere quanto segue:

b = 2

Hai anche chiesto se c'era un'alternativa, che Marco ha indicato.
cyberglassed  

Grazie Alain per i tuoi consigli, ma in realtà non ho una buona soluzione per il mio problema,
quindi devo prendere qualche strana soluzione.
Sarebbe davvero bello che mql5 supporti dinamicamente la valutazione del codice come la funzione eval(...) in PHP e Javascript,
allora potremmo caricare piccoli pezzi di codice da file esterni (a volte molto interessanti) e anche implementare la funzione StringToEnum facilmente come:

int StringToEnum(string enumId) {
eval("return " + enumId + ";");
}

In altre parole, con il supporto della funzione eval(...) potremmo risolvere molte cose allo stesso tempo.

Questo potrebbe essere un consiglio molto interessante per il team di sviluppatori di MT5.

Grazie, Cyberglassed.
JD4  
cyberglassed:

Grazie Alain per i tuoi consigli, ma in realtà non ho una buona soluzione per il mio problema,
quindi devo prendere qualche strana soluzione.
Sarebbe davvero bello che mql5 supporti dinamicamente la valutazione del codice come la funzione eval(...) in PHP e Javascript,
allora potremmo caricare piccoli pezzi di codice da file esterni (a volte molto interessanti) e anche implementare la funzione StringToEnum facilmente come:

int StringToEnum(string enumId) {
eval("return " + enumId + ";");
}

In altre parole, con il supporto della funzione eval(...) potremmo risolvere molte cose allo stesso tempo.

Questo potrebbe essere un consiglio molto interessante per il team di sviluppatori di MT5.

Grazie, Cyberglassed.
In MQL c'è già la possibilità di caricare librerie esterne (come DLL) o file #include specifici e fare in modo che ciò avvenga in questo modo. Poiché MQL è anche un linguaggio OOP, in teoria, si potrebbe scrivere il codice di quella funzione da soli, e semplicemente includerlo nei programmi in cui si ha bisogno di quella particolare funzionalità. Sia all'interno del codice del proprio EA, sia come file esterno.
cyberglassed  
JD4:
In MQL c'è già la possibilità di caricare librerie esterne (come DLL) o file #include specifici e fare in modo che ciò avvenga in questo modo. Poiché MQL è anche un linguaggio OOP, in teoria, si potrebbe scrivere il codice di quella funzione da soli, e semplicemente includerlo nei programmi in cui si ha bisogno di quella particolare funzionalità. Sia all'interno del codice del proprio EA, sia come file esterno.

Grazie JD4, ma purtroppo questo non risolve le mie esigenze perché quando carichi DLL esterne gli passi dei parametri e ottieni un risultato basato su quei parametri, va bene, ma lì stai programmando in un altro linguaggio/ambiente/luogo e non esattamente in mql5. Ho programmato DLL personalizzate e le ho caricate in mql5 quando per me non ha importanza il linguaggio che elaborerà i miei parametri, ma in questo thread volevo che i dati fossero elaborati in mql5 così posso fare uso (per esempio) di variabili locali e globali. Se si usano DLL esterne, lì non si conoscono i valori delle variabili locali e globali, perché è come una macchina di elaborazione esterna. Poi, se hai una funzione come eval(...) disponibile in mql5 (al momento non è il caso perché non implementata) allora puoi fare uso di variabili globali e locali, e anche di funzioni.

Motivazione: