Erros, bugs, perguntas - página 2009

 
fxsaber:
Por que razão não há avisos, de que a variável não é utilizada?

Porque é rubricado.

 
Alexey Viktorov:

Porque é inicializada.

Então, que diferença é que isso faz? É rubricado com uma constante. Mesmo este código deve gerar Advertência

void OnStart()
{
  int Array[];
  int i;
  
  i = Array[0];
  i = Array[1];
  i = Array[2];
}

Porque a variável e a matriz não estão envolvidas em lado nenhum.

 
fxsaber:

Então, que diferença é que isso faz? É rubricado com uma constante. Mesmo este código deve gerar Advertência

Porque a variável e a matriz não participam em lado nenhum.

Penso que tal código não deve ser compilado de todo porque o tamanho da matriz não está definido. Mas é apenas um palerma.

Como é que eles não participam? A uma variável é atribuído um valor de célula de matriz. É isto que eles tomam parte nos cálculos. Como pode o compilador saber sobre os seus planos futuros? Penso que fazê-lo da forma que você vê seria provavelmente correcto, mas muito difícil. Se tentar apresentar um algoritmo de tal verificação, pode escrever o seguinte: o programador verifica se a uma variável é atribuído algum valor. Caso contrário, significa que não é utilizado. Tente dar um algoritmo aproximado para determinar que uma variável é inicializada, mas não é utilizada em nenhum outro lugar nos cálculos.

O número de variáveis com o mesmo nome... é questionável.

 
Alexey Viktorov:

Como é que o compilador saberia dos seus planos futuros?

O compilador por vezes deita fora pedaços inteiros porque sabe

Fórum sobre comércio, sistemas de comércio automatizados e testes estratégicos

Implementações alternativas de funções/abordagens padrão

Renat Fatkhullin, 2016.09.01 23:50

Para evitar que o compilador deite fora o laço porque é inútil, é preciso utilizar os resultados dos cálculos. Por exemplo, fazer Imprimir Preço variável.

 
fxsaber:

O compilador deita fora pedaços inteiros por vezes porque sabe

Bem, se Renat ainda não se fartou de responder, esperemos pela sua resposta. E, em princípio, estou pessoalmente satisfeito com tudo.

 
Por favor, se a obra na kodobase tiver sido actualizada (o autor afinou o código), marcar o fio de discussão relevante como não lido.
 

Como é que faço um #uninclude?

// Test.mqh
void Func() {};
#include <Test.mqh>

// Здесь видна Func();

#uninclude <Test.mqh>

// Здесь не видна Func();
 

Corrigir ou o valor ou a unidade

2017.09.21 11:37:27.564 Tester  EURUSD: preliminary downloading of history ticks started, it may take quite a long time
2017.09.21 11:37:32.564 Tester  EURUSD: "bases\FIBOGroup-MT5 Server\ticks\EURUSD\201708.tkc" download (836044.77 Kb/sec)
2017.09.21 11:37:41.565 Tester  EURUSD: 45% ticks downloaded (535.34 Kb/sec)
2017.09.21 11:37:49.565 Tester  EURUSD: 53% ticks downloaded (518.17 Kb/sec)
2017.09.21 11:38:01.571 Tester  EURUSD: 61% ticks downloaded (530.69 Kb/sec)
2017.09.21 11:38:12.571 Tester  EURUSD: 70% ticks downloaded (547.64 Kb/sec)
2017.09.21 11:38:26.572 Tester  EURUSD: 82% ticks downloaded (543.88 Kb/sec)
2017.09.21 11:38:38.573 Tester  EURUSD: 94% ticks downloaded (552.07 Kb/sec)
2017.09.21 11:38:50.573 Tester  EURUSD: preliminary downloading of history ticks completed, 44.41 Mb in 1:23.008 (547.80 Kb/sec)
 
fxsaber:

Como se faz um #unincluir?

Não se pode fazê-lo directamente. A refactoring de código (estrutura de ficheiro diferente ou OOP) irá ajudar.

 
no testador CopyTicks devolve zeros, isto é normal?