Erros, bugs, perguntas - página 2244

 
Ilyas:

Não importa que dados estejam contidos numa matriz não inicializada, em qualquer momento, os dados podem mudar, ninguém garante o seu valor.
É por isso que a utilização de variáveis não inicializadas (ler memória) leva por vezes a situações, com uma longa procura da causa:

  1. Funciona num computador, não no outro
  2. Trabalha no terminal, não no testador
  3. Após a actualização do programa terminal/CA comportou-se de forma diferente
  4. Acrescentei Imprimir não funcionava mais.
  5. etc.

Só posso dar alguns conselhos.
Deve adquirir o hábito de inicializar sempre os dados, para que no futuro não perca muito tempo na procura de erros relacionados com a falta de inicialização.

Obrigado pelos esclarecimentos e conselhos.

 
Ilyas:

O ArrayResize não limpa a memória, pelo que contém lixo do "consumidor" anterior.

Isto é feito por velocidade, porque depois de a memória ser atribuída a uma matriz, em 99,99(9)% dos casos, o utilizador irá "preenchê-la" com os seus dados.


Esta não é a explicação correcta, o que pode causar problemas aos novatos; o ficheiro de ajuda ArrayResize tem a explicação correcta.

Em essência, os novatos precisam primeiro de compreender o que é uma matriz e como é armazenada na memória, como é criada e como a memória é atribuída a ela, depois não terão quaisquer problemas.

ps. em geral, a implementação de matrizes em MQL5 é pior do que em C++, bem como as estruturas.

Em programas simples a implementação de matrizes é bem sucedida, em programas complexos torna-se um problema

 
Artyom Trishkin:

O que quer dizer com "não"? Ninguém tira o stick de memória da ranhura da placa-mãe. Assim que a memória estiver presente e libertada (não inicializada com um valor, mas libertada), será utilizada para outras necessidades do programa.

Memória, é a informação armazenada, não o meio de armazenamento, que é a barra de RAM.

Não sabia que a memória não é zerada, mas apenas libertada/alocada endereços para a guardar e é preciso ser o próprio a organizar a autorização.

Obrigado.
 

Reparei durante muito tempo que a procura de corretores/servidores de negociação não funciona correctamente quando se abre uma conta de demonstração via Terminal.

Introduzo o nome do corretor e não recebo nada


Se eu introduzir o nome completo do servidor comercial obtenho o resultado desejado


 

Instalação de MT5 1882, ficheiro descarregado do website (https://download.mql5.com/cdn/web/metaquotes.software.corp/mt5/mt5setup.exe?utm_source=www.mql5.com&utm_campaign=download).
UAC activado, o erro ocorre antes da concessão de direitos de administrador.
Correr como administrador não resolve o problema, apenas esconde a caixa de mensagens de erro.




 

Algum conselho? construir 1881 mt5. Estou a executar uma optimização normal. O resultado é que a optimização é executada de novo, mas os agentes locais não começam - apenas ligam e desligam. Nada nos registos dos agentes.

Só o reinício do mt ajuda.

 

Na mesma construção, encontrei um problema. Mt não quer anexar ao fim do ficheiro como era antes - esfrega-o sempre em

int f = FileOpen(file,FILE_COMMON|FILE_READ|FILE_WRITE|FILE_TXT);

 

2018.07.26 19:23:56.269 Core 01 erro de autorização do agente testador

Como é ))) ? e o que fazer?

 
Anton Ohmat:

2018.07.26 19:23:56.269 Core 01 erro de autorização do agente testador

Como é ))) ? e o que fazer?

Na melhor das hipóteses, a janela do renderizador não está fechada. Na pior das hipóteses, um antigo problema conhecido.

 
Anton Ohmat:

Na mesma construção, encontrei um problema. Mt não quer anexar ao fim do ficheiro como era antes - esfrega-o sempre em

int f = FileOpen(file,FILE_COMMON|FILE_READ|FILE_WRITE|FILE_TXT);

Realiza uma FileSeek no final do ficheiro antes de escrever o ficheiro?