Erros, bugs, perguntas - página 1876

 
Erro de compilação
struct STRUCT
{
  long l;
  
  STRUCT( void )
  {
  }
};

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

1. Quando é que haverá uma descrição do sindicato na documentação?

2. é um substituto para estruturas simples?

3. a conversão do tipo sindical será apoiada como descrito para as estruturas na documentação?

 

Eis como se pode utilizar o sindicato para copiar uma estrutura para uma 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 possa tentar resolver o problema aqui. De facto, tudo o que estava no_espaço foi copiado para_un_space, a principal coisa sobre o alinhamento das estruturas não esquecer o tamanho do buffer da matriz, embora eu tenha alterado a localização dos campos na estrutura e os dados continuem a ser copiados correctamente, mas é melhor ater-se ao alinhamento das estruturas. É uma muleta, mas pelo menos é assim ))

 
Alexey Viktorov:

Porque é que a matriz é zerada duas vezes?

)) esqueceu de remover, apenas rubricar e pronto, já corrigido ))
 
MetaEditor cai em F7
union UNION
{
  uchar Bytes[sizeof(MqlTick)];
  MqlTick Tick;
};

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

muito provavelmente porque o tamanho da matriz precisa de ser declarado como constante, especialmente porque o tamanho do MqlTick obviamente não vai mudar ))
Uma matriz é declarada como uma constante. Falha do editor.
 
fxsaber:
MetaEditor cai em F7

a mesma canção, muito provavelmente devido à cópia a = b; sem ela tudo está bem
 
fxsaber:
Array e é declarada como uma constante. Falha do editor.

não teve tempo para apagar ))
 
Pode dizer-me se há planos para adicionar a utilização de um modelo ao sindicato, para que o possa fazer:
template<typename T>
union structToBytes
{
  uchar bytes[sizeof(T)];
  T data;
};
 

Qual é a hora de limpar a cache do agente de teste no MT5?

Mas no meu caso acontece que assim é - optimizei, depois faço um teste com carraças reais, neste caso criei uma cache para 6GB. Quando altero a data do teste, a cache é libertada.

Mas aqui tenho uma cache é sobre-escrita em 5 minutos - é normal? Se não reiniciar o teste, ou seja, se se afastar do computador, voltar, e ele voltar a escrever-lhe aqui e ali 6GB, nenhum disco rígido não é suficiente, será apagado.

Não é mais lógico limpar a cache quando se muda a data do teste, o conselheiro ou quando se descarrega o terminal?