Bibliotecas: TradeTransactions - página 5

 
fxsaber:

Os códigos-fonte da biblioteca contêm o Convert.mqh, que converte rapidamente uma matriz de um tipo em uma matriz de outro tipo.

// Conversão rápida de matriz.
#include <fxsaber\TradeTransactions\Convert.mqh> // https://www.mql5.com/pt/code/22166

void OnStart()
{
  MqlTick Ticks[];

  MqlRates Rates[];  
  CopyRates(_Symbol, PERIOD_CURRENT, 0, 10, Rates); // Recebi as citações.
  CONVERT::ArrayToArray(Rates, Ticks);              // Conversão de MqlRates[] -> MqlTick[].

  MqlRates Rates2[];    
  CONVERT::ArrayToArray(Ticks, Rates2);             // Conversão de MqlTick[] -> MqlRates[].
  ArrayPrint(Rates2);                               // Verifique se tudo está correto.
}
 
fxsaber :

Você pode trocar qualquer coisa por meio do Resources.


Você afirma ter feito download do Container2, mas não o utiliza. Logicamente, deveria ser assim:

  // Obter os dados em sua forma original
  string Str2[];
  Container2[0].Get(Str2);                // Obteve a matriz
  ArrayPrint(Str2);

  PRINT(Container2[1].Get<double>())      // Temos um número
  PRINT(Container2[2].Get<MqlTick>().bid) // Temos a estrutura   
É claro que, em seu exemplo, o resultado é o mesmo.

O mais importante é que, usando o código acima como um script com download de bibliotecas do

obtive :

2019.03.26 18:11:51.624 R-277866Original (EURUSD,M1) Container[i].GetType() = string[2]
2019.03.26 18:11:51.624 R-277866Original (EURUSD,M1) Container[i].GetType() = double
2019.03.26 18:11:51.624 R-277866Original (EURUSD,M1) Container[i].GetType() = MqlTick
2019.03.26 18:11:51.656 R-277866Original (EURUSD,M1) Estouro de pilha em '...\MQL5\Scripts\forum\R-277866Original.ex5'

?
 
Alain Verleyen:

Você afirma que carrega o Container2, mas não o utiliza. Logicamente, deveria ser assim:

Sim, há um erro de digitação no exemplo.


É claro que, em seu exemplo, o resultado é o mesmo.

Com sua edição, o resultado será o mesmo.


O mais importante é que, usando o código acima como um script com download de bibliotecas de

obtive :

2019.03.26 18:11:51.624 R-277866Original (EURUSD,M1) Container[i].GetType() = string[2]
2019.03.26 18:11:51.624 R-277866Original (EURUSD,M1) Container[i].GetType() = double
2019.03.26 18:11:51.624 R-277866Original (EURUSD,M1) Container[i].GetType() = MqlTick
2019.03.26 18:11:51.656 R-277866Original (EURUSD,M1) Estouro de pilha em '...\MQL5\Scripts\forum\R-277866Original.ex5'

?

Não posso dizer nada sem o código-fonte.

 
fxsaber :
...

Não posso dizer nada sem o código-fonte.

O código-fonte é exatamente o seu código. Compilação de 2009.

Arquivos anexados:
 
Alain Verleyen:

É o seu código que é a fonte. Compilação 2009.

Executado sem erros.

 

Boa tarde.

Estou apenas declarando

RESOURCEDATA<uchar> Res;

E esse erro

'Data' - struct undefined       Convert.mqh     75      49
in template 'int CONVERT::ArrayToStruct(const SOURCE&[],TARGET&[])' specified with [SOURCE=uchar,TARGET=uint]   Convert.mqh     60      14
'Data' - struct undefined       Convert.mqh     43      38
in template 'int CONVERT::StructToArray(const SOURCE&[],TARGET&[])' specified with [SOURCE=uchar,TARGET=uint]   Convert.mqh     29      14

Não era antes, acho que depois de atualizar o terminal apareceu (build 2085). Ou estou em algum lugar estúpido? )

 
Oleksii Chepurnyi:

Ele não existia antes, acho que apareceu após a atualização do terminal (build 2085).

Localizei esse bug do compilador

template <typename T>
struct A { T a; };

void f1()
{
  struct B { int Data; };
  A<B> Tmp;
}

void f2()
{
  struct B { int Data; };
  A<B> Tmp;
  
  Tmp.a.Data = 0; // 'Data' - struct undefined
}
 
Acho que depois de atualizar o terminal, ele apareceu
.

Sim, não existe esse erro no 2037.

 
Oleksii Chepurnyi:

Sim, não existe esse erro em 2037.

Para contornar o erro, substitua Include\fxsaber\TradeTransactions\Convert.mqh pelo arquivo anexado.

Arquivos anexados:
Convert.mqh  4 kb
 
fxsaber:

Para contornar o bug, substitua Include\fxsaber\TradeTransactions\Convert.mqh pelo arquivo anexado.

Funciona) Obrigado!