Como obter o comprimento do enumero e item em MQL4/MQL5 ? - página 2

 
Alain Verleyen:
O comprimento nunca é desconhecido e este tópico é apenas resultado de um design ruim.
Esta exigência vem de um projeto de AutoTester.
Em muitos Indicadores/As, os parâmetros de entrada contêm enumeração personalizada, precisamos descobrir qual item (e valor relativo) em enumeração.
Portanto, não diga "design ruim". Blá...blá...
 
Xiangdong Guo:
Esta exigência vem de um projeto de AutoTester.
Em muitos Indicadores/As, os parâmetros de entrada contêm enumeração personalizada, precisamos descobrir qual item (e valor relativo) em enumeração.
Portanto, não diga "design ruim". Blá...blá...
É claro que é um projeto ruim. Mas não é um problema para mim.
 
Marco vd Heijden:
O que você quer dizer com "duração da enumeração"?
enum fruit
  {
   APPLE=0,//APPLE
   BANANA=1,//BANANA
   GRAPE=2,//GRAPE
   ORANGE=3,//ORANGE
   CARROT=4,//CARROT
  };
  
sinput fruit type;//PICK A FRUIT 

Talvez a cenoura não seja uma fruta... eu ainda não entendo o que Xiangdong Guo quer dizer com "comprimento da enumeração".

O número de letras de cada opção de nome de cadeia?

Quantas opções são possíveis?

O valor numérico da opção?

Não apenas mau desenho, mas também não muito claro sobre o que ele quer dizer.

 
Marco vd Heijden:
O número de valores, portanto 5 em seu exemplo de frutas.
 
Alain Verleyen:
O número de valores, portanto 5 em seu exemplo de frutas.

Concordo que é estático, não pode ser variável, então será sempre um valor fixo conhecido para começar.

Entretanto, se Xiangdong Guo estiver testando indicadores que ele mesmo não projetou ou escreveu, e quiser saber ou detectar parâmetros de entrada automaticamente...

Não tem certeza de como saber o número de opções disponíveis poderia ajudar, talvez ele queira cruzar todas as opções disponíveis e esteja simplesmente procurando o número de testes a serem executados?

eu procuraria as opções assumidas para resolver estes valores uma vez que você tente converter fora dos limites das opções disponíveis que ele irá gerar não pode converter erro de enumeração, uma vez que ele não existe.

 
Marco vd Heijden:

MT4/MT5 usar a função C++/C# para recuperar o item do enum. Mas a MetaQuotes não porta essas funções para MQL4/MQL5. Hum...hum...

enum DURATION_INTERVALS  // Enumeration of named constants
   {
    month=1,     // Interval of one month
    two_months,  // Two months
    quarter,     // Three months - quarter
    halfyear=6,  // Half a year
    year=12,     // Year - 12 months
   };

input DURATION_INTERVALS HistoryDuration = month;

 
Xiangdong Guo:

MT4/MT5 usar a função C++/C# para recuperar o item do enum. Mas MetaQuotes não porta essas funções para MQL4/MQL5. Hum...hum...

Qual função? Qual é o problema ? Por que você quer percorrer os itens da enumeração ?
 
Alain Verleyen:
Qual função ? Qual é o problema ? Por que você quer fazer o loop através dos itens do enum?

Se alguém quer/necessário fazer algo que não é possível com MQL, isso não significa necessariamente "design ruim".

Para começar o tópico: não é possível fazer o que você quer na versão atual da MQL.

A única maneira é copiar todos os itens em uma matriz e fazer seu loop usando essa matriz. Mas só é possível fazer isso quando/se você puder modificar o código.

 
Andrey Barinov:

Se alguém quer/necessário fazer algo que não é possível com MQL, isso não significa necessariamente "design ruim".

Para começar o tópico: não é possível fazer o que você quer na versão atual da MQL.

A única maneira é copiar todos os itens em uma matriz e fazer seu loop usando essa matriz. Mas só é possível fazer isso quando/se você puder modificar o código.

Usar um enum em vez de um array é um projeto ruim. Não é ?

 
Alain Verleyen:

Usar um enumero em vez de uma matriz é um projeto ruim. Não é ?

Não, o uso de um array em vez de um enumero é um design ruim.

Exemplo: Imagine que você tem um valor de string. E a tarefa é descobrir se esta string é igual/contém um dos nomes dos itens da enumeração (EnumToString()).

Como você resolveria isto?