Librerías: TradeTransactions - página 5

 
fxsaber:

Las fuentes de la biblioteca contienen Convert.mqh, que convierte rápidamente una matriz de un tipo en una matriz de otro tipo.

// Reparto rápido de matrices.
#include <fxsaber\TradeTransactions\Convert.mqh> // https://www.mql5.com/es/code/22166

void OnStart()
{
  MqlTick Ticks[];

  MqlRates Rates[];  
  CopyRates(_Symbol, PERIOD_CURRENT, 0, 10, Rates); // Tengo las comillas.
  CONVERT::ArrayToArray(Rates, Ticks);              // Conversión MqlRates[] -> MqlTick[].

  MqlRates Rates2[];    
  CONVERT::ArrayToArray(Ticks, Rates2);             // Transformación MqlTick[] -> MqlRates[].
  ArrayPrint(Rates2);                               // Asegúrese de que todo está correcto.
}
 
fxsaber :

Puedes intercambiar cualquier cosa a través de Recursos.


Afirmas descargar Container2, pero no lo usas. Lógicamente, debería ser así:

  // Obtener los datos en su forma original
  string Str2[];
  Container2[0].Get(Str2);                // Obtenido el array
  ArrayPrint(Str2);

  PRINT(Container2[1].Get<double>())      // Tenemos un número
  PRINT(Container2[2].Get<MqlTick>().bid) // Tenemos la estructura   
Por supuesto, en tu ejemplo, el resultado es el mismo.

Más importante aún, usando el código anterior como script con descarga de librerías desde

obtengo :

2019.03.26 18:11:51.624 R-277866Original (EURUSD,M1) Contenedor[i].GetType() = cadena[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) Desbordamiento de pila en '...\MQL5\Scripts\forum\R-277866Original.ex5'

?
 
Alain Verleyen:

Afirmas que cargas el Contenedor2, pero no lo usas. Lógicamente, debería ser así:

Sí, hay un error tipográfico en el ejemplo.


Por supuesto, en tu ejemplo el resultado es el mismo.

Con tu edición, el resultado será el mismo.


Lo que es más importante, usando el código anterior como script con las librerías descargadas de

obtengo :

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) Desbordamiento de pila en '...\MQL5\Scripts\forum\R-277866Original.ex5'

?

No puedo decir nada sin el código fuente.

 
fxsaber :
...

No puedo decir nada sin la fuente.

La fuente es exactamente su código. Construir 2009.

Archivos adjuntos:
 
Alain Verleyen:

La fuente es tu código. Compilación 2009.

Ejecutado sin errores.

 

Buenas tardes.

Sólo estoy declarando

RESOURCEDATA<uchar> Res;

Y tal error

'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

No era antes, creo que después de actualizar el terminal apareció (build 2085). ¿O estoy en algún lugar estúpido? )

 
Oleksii Chepurnyi:

Antes no existía, creo que apareció después de la actualización del terminal (build 2085).

Localizado este bug del 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; // 'Datos' - struct undefined
}
 
Creo que después de actualizar el terminal apareció
.

Sí, no hay tal error en 2037.

 
Oleksii Chepurnyi:

Sí, no hay tal error en 2037.

Bypassed el error, reemplazar Include\fxsaber\TradeTransactions\Convert.mqh con el adjunto.

Archivos adjuntos:
Convert.mqh  4 kb
 
fxsaber:

Bypassed the bug, replace Include\fxsaber\TradeTransactions\Convert.mqh with the attached one.

Funciona ) Gracias