Errori, bug, domande - pagina 1876

 
Errore di compilazione
struct STRUCT
{
  long l;
  
  STRUCT( void )
  {
  }
};

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

1. Quando ci sarà una descrizione dell'unione nella documentazione?

2. È un sostituto delle strutture semplici?

3. La conversione del tipo di unione sarà supportata come descritto per le strutture nella documentazione?

 

ecco come potete usare l'unione per copiare una struttura in un array di char:

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;
}

quindi puoi provare a risolvere il problema qui. Infatti, tutto ciò che era in_space è stato copiato in_un_space, la cosa principale dell'allineamento delle strutture non è dimenticare la dimensione del buffer dell'array, anche se ho cambiato la posizione dei campi nella struttura e i dati sono ancora copiati correttamente, ma è meglio attenersi all'allineamento delle strutture. È una stampella ma almeno è così ))

 
Alexey Viktorov:

Perché l'array viene azzerato due volte?

)) ha dimenticato di rimuovere, solo inizializzare ed è tutto, già corretto ))
 
MetaEditor si blocca su F7
union UNION
{
  uchar Bytes[sizeof(MqlTick)];
  MqlTick Tick;
};

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

molto probabilmente perché la dimensione dell'array deve essere dichiarata come una costante, soprattutto perché la dimensione di MqlTick ovviamente non cambierà ))
Un array è dichiarato come una costante. Crollo dell'editore.
 
fxsaber:
MetaEditor si blocca su F7

stessa canzone, molto probabilmente a causa della copia a = b; senza di essa tutto va bene
 
fxsaber:
Array ed è dichiarato come una costante. Crollo dell'editore.

non ha avuto il tempo di cancellare ))
 
Potete dirmi se ci sono piani per aggiungere l'uso di un modello all'unione, in modo da poterlo fare:
template<typename T>
union structToBytes
{
  uchar bytes[sizeof(T)];
  T data;
};
 

Qual è il tempo di cancellare la cache dell'agente di prova in MT5?

Ma nel mio caso risulta così - ho ottimizzato, poi eseguo il test su tick reali e in questo caso viene creata la cache per 6GB. Quando cambio la data del test, la cache viene rilasciata.

Ma qui ho una cache viene sovrascritto in 5 minuti - è normale? Se non si riavvia il test, cioè, è andato via dal computer, è tornato, e lui scrive di nuovo a voi qua e là 6GB, nessun disco rigido non è sufficiente, sarà cancellato.

Non è più logico cancellare la cache quando si cambia la data del test, consigliere o quando si scarica il terminale?