Erros, bugs, perguntas - página 1837

 
fxsaber:
Isso é zero.

Sim, entendi. De facto, como pode haver uma encomenda com TRADE_TRANSACTION_DEAL_ADDD...

Obrigado.

 
sizeof-bug
void f( uchar &Array[] )
{
  Print(sizeof(Array));
}

void OnStart( void )
{
  uchar Bytes[1];
  
  Print(sizeof(Bytes));
  
  f(Bytes);
}

Resultado
1
52
 

Durante os testes, o registo não indica o momento em que a encomenda expira:

2017.03.30 22:12:30.271 Core 1 2017.01.18 16:55:00 limite de compra 0,01 EURUSD a 1,06789 (1,06879 / 1.06889 / 1.06889)<br / translate="no">2017.03.30 22:12:30.271 A encomenda Core 1 expirou [#4 limite de compra 0.01 EURUSD a 1.06789]

Gostaria que fosse assim:

2017.03.30 22:12:30.271 Núcleo 1 2017.01.18 17:25:00 fim da encomenda [#4 limite de compra 0,01 EURUSD a 1,06789]

 
fxsaber:
sizeof-bug
Resultado

Uma matriz local de 1 byte tornou-se um objecto de matriz universal quando passado como parâmetro. O ponteiro do buffer de objectos está na realidade associado à matriz local. mas não pode ser redistribuído.

A função f pode tomar qualquer matriz como um input, incluindo uma matriz dinâmica.

 
Slawa:

Uma matriz local de 1 byte tornou-se um objecto de matriz universal quando passado como parâmetro. O seu ponteiro tampão está na realidade associado à matriz local. mas não pode ser redistribuído.

A função f pode introduzir qualquer matriz, incluindo dinâmica

Esta é uma explicação muito interessante da arquitectura interna. Mas devido a isto, o tamanho do produto produz um resultado bastante diferente do que se espera quando se codifica.

Isto é, há alguma inconsistência na documentação e torna-se pouco claro como codificar sem verificar cada vez.


Além disso, se o tamanho da função for chamado após a saída da função, o tamanho é determinado sem ser afectado por tais nuances.

 

A opção de sincronizar posições sem aviso não funciona e executar dentro de spreads também não funciona,
Abre ao pior preço e não pode ser ajustado, e assim por diante em todos os terminais. Todas as posições estão abertas.

O que esperar quando o fornecedor fecha todas as transacções mais vantajosas!

 
fxsaber:

Esta é uma explicação muito interessante da arquitectura interna. Mas devido a este tamanho de produção, a produção é completamente diferente da que se pretende quando se codifica.

Isto é, há alguma inconsistência na documentação e torna-se pouco claro como codificar sem verificações de cada vez.


Além disso, se chamar tamanhoof após sair de uma função, o tamanho é determinado sem ser afectado por tais nuances.

Já leu atentamente a documentação sobre o tamanho de?

A operação de tomar o tamanho de um tipo de dados ou o tamanho de um objecto de qualquer tipo de dados ( tamanho de )

Com a ajuda dadimensão daoperação é possível determinar a dimensão da memória que corresponde a um identificador ou a um tipo. A dimensão da operação tem o seguinte formato:

Exemplo:

tamanho do(expressão).

Qualquer identificador ou um nome de tipo entre parênteses pode ser utilizado como expressão. Note-se que um nome de tipo vazio não pode ser utilizado, e um identificador não pode referir-se a um campo de bits ou ser um nome de função.

Se um nome de matriz estática for especificado como expressão (ou seja, a primeira dimensionalidade é especificada), o resultado é o tamanho da matriz inteira (ou seja, o produto do número de elementos pelo comprimento do tipo). Se um nome de matriz dinâmica for especificado como uma expressão (a primeira dimensionalidade não é especificada), o resultado é o tamanho do objecto da matriz dinâmica.

Quando o sizeof é aplicado a uma estrutura ou nome de tipo de classe ou a um identificador que tenha uma estrutura ou tipo de classe, o resultado é o tamanho real da estrutura ou classe.

PS há formas mais directas de descobrir o tamanho de uma matriz

 
Slawa:

Se um nome de matriz estática for especificado como expressão (ou seja, a primeira dimensão é especificada), o resultado é o tamanho de toda a matriz (ou seja, o produto do número de elementos pelo comprimento do tipo).

Deixei de fora da citação apenas a peça que se refere ao código acima. É uma matriz estática ali, e o produto de dois números que menciona deve ser igual a um.

Se depois de passar o array da estática se tornar dinâmico e no retorno se tornar estático novamente, então como passar o array na forma estática?

PS há formas mais directas de descobrir o tamanho da matriz

sizeof é bom por causa da sua universalidade - aplicável também a tipos e matrizes comuns. E o ArraySize é aplicável apenas a matrizes.
 
fxsaber:

Da citação, deixei apenas a peça que se refere ao código acima. É uma matriz estática, e o produto de dois números que mencionou deve ser um só.


Mais uma vez. Onde há uma matriz estática, ela mostra uma.

Os parâmetros da função nunca foram arrays estáticos. Há um objecto de um conjunto desconhecido de antemão. Dinâmico, estático, série temporal, tampão indicador

Como é que a "universalidade do tamanho de" o ajuda? Isto não é C ou C++ com acesso directo à memória. E tem de se ter cuidado ao interpretar o tamanho dos resultados. Atribuir uma matriz dinâmica a 1000 elementos e pedir o tamanhoof. Estou a falar especificamente de C++ - parece estar surpreendido com o resultado

E não ouviu nada sobre _countof?

 
Slawa:

Mais uma vez. Onde há uma matriz estática, ela mostra uma.

Os parâmetros da função nunca foram arrays estáticos. Há um objecto de um conjunto desconhecido de antemão. Dinâmico, estático, série cronológica, tampão indicador.

Como é que a "universalidade do tamanho de" o ajuda? Isto não é C ou C++ com acesso directo à memória. E tem de se ter cuidado ao interpretar o tamanho dos resultados. Atribuir uma matriz dinâmica a 1000 elementos e pedir o tamanhoof. Estou a falar especificamente de C++ - parece estar surpreendido com o resultado

E não ouviu nada sobre _countof?

Só conheço um pouco de MQL. Eu não sei SI, é por isso que ainda não ouvi falar.

void OnStart( void )
{
  uchar Bytes[];
  
  ArrayResize(Bytes, 100);
  
  Print(sizeof(Bytes));
}

O resultado é 52. Está tudo bem? Não tenho quaisquer queixas sobre a arquitectura interna. Só quero ter a certeza de que as minhas percepções durante a codificação não estão erradas. As noções são formadas com base na leitura cuidadosa da documentação e dos guiões de teste para as ambiguidades.


Neste caso, encontrei algum comportamento estranho num grande código. E depois de um longo estudo, encontrei finalmente uma nuance que descreveu, que é dificilmente óbvia para ninguém neste fórum. E com a amostra acima revela-se que não se pode fazer tamanhoof para matrizes dinâmicas (o resultado é sempre 52).

Razão: