bazı "StringToEnum" işlevi veya alternatifi var mı?

 

Merhaba, eğer yaparsam:

string a = EnumToString(MODE_SMMA);

Alırım:

a = " MODE_SMMA "

Şimdi, tam tersini yapan bir işlev istiyorum, şöyle bir şey demek istiyorum:

int b = StringTo Enum ("MODE_SMMA");

b = 2

burada 2 sabitle ilişkili int değeridir: " MODE_SMMA "


Saygılar, siber gözlüklü.

 
MODE_SMMA

zaten tamsayı değeri 2'dir.

 Print ( IntegerToString ( MODE_SMMA ));
 
https://www.mql5.com/en/docs/convert , büyük bir dönüştürme işlevleri grubuna sahiptir.
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 :

zaten tamsayı değeri 2'dir.

Söyledikleriniz benim ihtiyaçlarıma uymuyor. Sorumu okuyabileceğiniz gibi, enum değerinden dizeye nasıl dönüştürüleceğini biliyorum, ancak yapmak istediğim tam tersi:

kod ile:

int b = StringTo Enum ("MODE_SMMA");

Aşağıdakileri almak istiyorum:

b = 2

 

StringToEnum yok.

 MODE_SMMA

zaten tamsayı değeri 2'dir.

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



 int b;

string StringToEnum= "MODE_SMMA" ;

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

Print ( "b= " ,b);



 
cyberglassed :

Söyledikleriniz benim ihtiyaçlarıma uymuyor. Sorumu okuyabileceğiniz gibi, enum değerinden dizeye nasıl dönüştürüleceğini biliyorum, ancak yapmak istediğim tam tersi:

kod ile:

int b = StringTo Enum ("MODE_SMMA");

Aşağıdakileri almak istiyorum:

b = 2

Ayrıca Marco'nun işaret ettiği bir alternatif olup olmadığını da sordunuz.
 

sağolun beyler

 

tavsiyen için teşekkür ederim Alain ama aslında sorunum için iyi bir çözümüm yok,
bu yüzden bazı garip geçici çözümler bulmam gerekiyor.
mql5'in PHP ve Javascript'teki eval(...) işlevi gibi dinamik olarak kod değerlendirmesini desteklemesi gerçekten güzel olurdu,
sonra harici dosyalardan (bazen çok ilginç) küçük kod parçaları yükleyebilir ve hatta şu işlevi uygulayabiliriz: StringToEnum kolayca:

int StringToEnum (dize enumId) {
eval("dönüş" + enumId + ";");
}

Yani eval(...) fonksiyonunun desteği ile aynı anda birçok şeyi çözebiliriz.

Bu, MT5 geliştirici ekibi için çok ilginç bir tavsiye olabilir.

Teşekkürler, Cyberglassed.
 
cyberglassed :

tavsiyen için teşekkür ederim Alain ama aslında sorunum için iyi bir çözümüm yok,
bu yüzden bazı garip geçici çözümler bulmam gerekiyor.
mql5'in PHP ve Javascript'teki eval(...) işlevi gibi dinamik olarak kod değerlendirmesini desteklemesi gerçekten güzel olurdu,
sonra harici dosyalardan (bazen çok ilginç) küçük kod parçaları yükleyebilir ve hatta şu işlevi uygulayabiliriz: StringToEnum kolayca:

int StringToEnum (string enumId) {
eval("dönüş" + enumId + ";");
}

Yani eval(...) fonksiyonunun desteği ile aynı anda birçok şeyi çözebiliriz.

Bu, MT5 geliştirici ekibi için çok ilginç bir tavsiye olabilir.

Teşekkürler, Cyberglassed.
MQL'de, harici kitaplıkları (DLL'ler olarak) veya belirli #include dosyalarını yükleme ve bu şekilde olmasını sağlama yeteneği zaten vardır. MQL aynı zamanda bir OOP dili olduğundan, teoride, bu fonksiyon kodunu kendiniz yazabilir ve sadece o özel fonksiyona ihtiyaç duyduğunuz programlarınıza dahil edebilirsiniz. EA'nızın kodu içinde veya harici bir dosya olarak.
 
JD4 :
MQL'de, harici kitaplıkları (DLL'ler olarak) veya belirli #include dosyalarını yükleme ve bu şekilde olmasını sağlama yeteneği zaten vardır. MQL aynı zamanda bir OOP dili olduğundan, teoride, bu fonksiyon kodunu kendiniz yazabilir ve sadece o özel fonksiyona ihtiyaç duyduğunuz programlarınıza dahil edebilirsiniz. EA'nızın kodu içinde veya harici bir dosya olarak.

teşekkür ederim JD4 ama ne yazık ki bu benim gereksinimlerimi çözmüyor çünkü harici DLL'leri yüklediğinizde bazı parametreler iletiyorsunuz ve bu parametrelere dayalı bir sonuç alıyorsunuz, sorun değil, ama orada başka bir dilde/ortamda/yerde programlama yapıyorsunuz ve değil tam olarak mql5'te. Özel DLL'leri programladım ve benim için parametrelerimi işleyecek dil önemli olmadığında onu mql5'e yükledim, ancak bu iş parçacığında verilerin mql5'te işlenmesini istedim, böylece (örneğin) yerel ve globalden yararlanabilirim değişkenler. Harici DLL'ler kullanırsanız, yerel ve global değişkenlerin değerlerini bilemezsiniz, çünkü bu harici bir işleme makinesi gibidir. Daha sonra, mql5'te bulunan eval(...) gibi bir fonksiyonunuz varsa (şu anda durum böyle değil çünkü uygulanmadı), o zaman global ve yerel değişkenleri ve hatta fonksiyonları kullanabilirsiniz.

Neden: