StringToEnum "関数やその代替はありますか?

 

こんにちは、もし私が

文字列 a = EnumToString(MODE_SMMA);

私は得る。

a ="MODE_SMMA"

さて、私はちょうど反対のことを行ういくつかの関数が 必要です、私は次のようなことを意味します。

int b = StringToEnum("MODE_SMMA");

b = 2

ここで、2は定数"MODE_SMMA"に関連付けられたint値です。


よろしく、cyberglassed。

 
MODE_SMMA

は既に整数値2である。

Print(IntegerToString(MODE_SMMA));
 
https://www.mql5.com/en/docs/convert、変換機能の大きなグループリストを持っています。
Documentation on MQL5: Conversion Functions
Documentation on MQL5: Conversion Functions
  • www.mql5.com
Conversion Functions - Reference on algorithmic/automated trading language for MetaTrader 5
 
Marco vd Heijden:

はすでに整数値2です。

あなたの言うことは、私のニーズには合いません。私の質問にあるように、私はenum値から文字列に変換する方法を知っていますが、私がやりたいことはその逆です。

というコードです。

int b = StringToEnum("MODE_SMMA")

私は以下を取得したい。

b = 2

 

StringToEnumは存在しない。

MODE_SMMA

はすでに整数値2です。

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



int b;

string StringToEnum="MODE_SMMA";

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

Print("b= ",b);



 
cyberglassed:

あなたの言うことは、私のニーズには合いません。私の質問にあるように、私はenum値から文字列に変換する方法を知っていますが、私がやりたいことはその逆です。

というコードです。

int b = StringToEnum("MODE_SMMA")

私は以下を取得したい。

b = 2

また、代替案があるかという質問もありましたが、これはマルコが指摘したものです。
 

おつかれさまでした

 
 
Alain Verleyen:
StringToEnum 関数の有効なユースケースをまだ待って います。)

Alainのアドバイスに感謝しますが、実は私の問題に対する良い解決策はありません。
だから、私はいくつかの奇妙な回避策を取る必要があります。
mql5がPHPや Javascriptの eval(...) 関数のように動的にコードを評価する 機能をサポートしてくれるとありがたいのですが。
そうすれば、外部ファイルから小さなコードの断片を読み込むことができ、(時には非常に興味深い)関数を実装することもできます。StringToEnumの ような関数も簡単に実装できます。

intStringToEnum(string enumId) { {...
eval("return " + enumId + ";");
}

つまり、eval(...) 関数のサポートにより、多くのことを同時に解決することができるのです。

これは、MT5開発チームにとって非常に興味深いアドバイスになるかもしれません。

Cyberglassedさん、ありがとうございました。
 
cyberglassed:

Alainさん、アドバイスありがとうございました。でも実は、私の問題に対する良い解決策はありません。
だから、私はいくつかの奇妙な回避策を取らなければならない。
mql5がPHPや Javascriptの eval(...) 関数のように動的にコードを評価 できるようになれば、本当に素晴らしいことだと思います。
そうすれば、外部ファイルから小さなコードの断片を読み込むことができ、(時には非常に興味深い)関数を実装することもできます。StringToEnumの ような関数も簡単に実装できます。

intStringToEnum(string enumId) { {...
eval("return " + enumId + ";");
}

つまり、eval(...) 関数のサポートにより、多くのことを同時に解決することができるのです。

これは、MT5開発チームにとって非常に興味深いアドバイスになるかもしれません。

Cyberglassedさん、ありがとうございます。
MQLには、外部ライブラリ(DLL)や特定の#includeファイルを読み込んで、このように実現する機能がすでにあります。 MQLはOOP言語でもあるので、理論的には、その関数 コードを自分で書いて、特定の機能が必要なプログラムに含めることができます。 EAのコード内でも、外部ファイルとしてでもです。
 
JD4:
MQLには、外部ライブラリ(DLL)や特定の#includeファイルを読み込む機能がすでにあります。 MQLはOOP言語でもあるので、理論的には、その関数コードを自分で書いて、特定の機能が必要なプログラムに組み込むことができます。 EAのコード内でも、外部ファイルとしてもです。

なぜなら、外部DLLをロードするとき、いくつかのパラメータを渡して、そのパラメータに基づいた結果を得ることができるからです。私はカスタムDLLをプログラムし、それをmql5にロードしました。私にとってはパラメータを処理する言語は重要ではありませんが、このスレッドではデータをmql5で処理したかったので、ローカル変数とグローバル変数を(例えば)使用することができます。外部DLLを使用する場合、外部処理マシンのようなものなので、ローカル変数やグローバル変数の値はわかりません。そこで、eval(...)の ような関数が mql5で利用できれば(今はまだ実装されていないのでそうなっていない)、グローバル変数やローカル変数、さらには関数も利用できるようになります。

理由: