Errores, fallos, preguntas - página 1876

 
Error de compilación
struct STRUCT
{
  long l;
  
  STRUCT( void )
  {
  }
};

union UNION
{
  STRUCT Value; // 'STRUCT' has constructor and cannot be used as union member
};
 

1. ¿Cuándo habrá una descripción de la unión en la documentación?

2. ¿Sustituye a las estructuras simples?

3. ¿Se admitirá la conversión del tipo de unión como se describe para las estructuras en la documentación?

 

así es como se puede utilizar la unión para copiar una estructura en una matriz de caracteres:

struct DATA
  {
   int      var1;
   uint     var2;
   float    var3;
   double   var4;
  };

union NAME_BIT
  {
   char  buff[20];
   DATA  data;
   NAME_BIT() {
      ArrayInitialize(buff, 0);
   }
  };

int OnInit() {
   NAME_BIT _space, _un_space;
   _space.data.var1 = 100;
   _space.data.var2 = 78;
   _space.data.var3 = 1.999 f;
   _space.data.var4 = .0357;
   
   ArrayCopy(_un_space.buff, _space.buff);
   
//---
   return INIT_SUCCEEDED;
}

para que puedas intentar solucionar el problema aquí. De hecho, todo lo que estaba en_space copiado a_un_space, lo principal sobre la alineación de las estructuras de no olvidar el tamaño de la memoria intermedia de la matriz, aunque he cambiado la ubicación de los campos en la estructura y los datos se siguen copiando correctamente, pero es mejor atenerse a la alineación de las estructuras. Es una muleta pero al menos es así ))

 
Alexey Viktorov:

¿Por qué la matriz se pone a cero dos veces?

)) se olvidó de quitar, sólo inicializar y ya está, ya corregido ))
 
El MetaEditor se bloquea con F7
union UNION
{
  uchar Bytes[sizeof(MqlTick)];
  MqlTick Tick;
};

void OnStart()
{
  UNION a, b;
   
  a = b;
}
 
Konstantin:

probablemente porque el tamaño del array debe ser declarado como una constante, especialmente porque el tamaño de MqlTick obviamente no cambiará ))
Un array se declara como una constante. Choque de editores.
 
fxsaber:
El MetaEditor se bloquea con F7

la misma canción, muy probablemente debido a la copia de a = b; sin ella todo está bien
 
fxsaber:
Array y se declara como una constante. Choque de editores.

no tuvo tiempo de borrar ))
 
Me pueden decir si hay planes para añadir el uso de una plantilla a la unión, para que pueda hacer esto:
template<typename T>
union structToBytes
{
  uchar bytes[sizeof(T)];
  T data;
};
 

¿Cuál es el tiempo de borrado de la caché del agente de pruebas en MT5?

Pero en mi caso resulta que sí - optimicé, luego hago la prueba en ticks reales y en este caso se crea la caché para 6GB. Cuando cambio la fecha de la prueba, la caché se libera.

Pero aquí tengo un caché se sobrescribe en 5 minutos - ¿es normal? Si no se reinicia la prueba, es decir, se alejó de la computadora, regresó, y él de nuevo le escribe aquí y allá 6GB, sin disco duro no es suficiente, se borrará.

¿No es más lógico borrar la caché cuando se cambia la fecha de la prueba, el asesor o cuando se descarga el terminal?