Erros, bugs, perguntas - página 2891

 
A100:

Isto pode ser quando o compilador não tem objectivamente nenhuma informação:

ou seja, f() pode ter inicializado i ou não. E neste caso o compilador C++ dá um aviso, mas o MQL não o faz.

Em C++ os endereços das células de memória não são escondidos, é por isso que a variável é inicializada com lixo.
Em Mql os endereços das células de memória estão escondidos e não são acessíveis. Foi assim que o desenvolvedor Mql estragou o compilador ))

Em suma, inicialize sempre as variáveis e não terá dores de cabeça.
 
Roman:

Sim, mas antes da primeira iteração a variável j ainda não está inicializada, que é o que o compilador j jura.

Se não utilizar esta variável ou não colocar a atribuição i=j no corpo do loop, que seria idêntica à execução da primeira opção, não haverá avisos. O compilador não verifica a lógica do laço e a sequência de execução, ele verifica a sintaxe de cima para baixo, penso que sim, não tenho a certeza)

 
Há um erro no serviço de pesquisa do sítio. Esta pesquisa não produz este resultado.
 

fxsaber:

E em outras situações.

a resposta de impacto em vez disso está a abanar o terminal - uma grande inovação

 
Erro de compilação:
#define  MACRO(X)\ //Error: '\' - unexpected in macro definition
              X
 
TheXpert:

em vez disso, prima a resposta, descarrega o terminal - uma grande inovação.

É tudo a mesma coisa... E com a pergunta pela qual quase fui pregado aqui (na mesma carteira do menu drop-down e tópicos não lidos - apenas irmãos gémeos), e com a sua, e ainda (não sei como ninguém) penduro tais ... "coisa".

É isso que fazer com esta inscrição? Em lado nenhum, qualquer ligação para ver quem é perguntado e porquê, não (talvez esteja na carteira, mas eu não olhei para lá).

A impressão muito persistente é que todas estas "maravilhosas" alterações ao site estão a ser feitas por uma pessoa.... E pessoalmente para si próprio. Exactamente como ele pensa que precisa para si próprio. E não quer saber da nossa opinião...

 
Сергей Таболин:

É isso que fazer com esta inscrição?

Não sei, quando há aplicações normais, desaparece.
 

Quando aREASON_ACCOUNT é alterada, esperava-se receber a conta anterior e terminar o trabalho com ela, logicamente, mas não, se a conta foi alterada, recebemos um novo número no deinit em REASON_ACCOUNT.

Logicamente, o programa deve terminar de trabalhar com os dados actuais e enviar os novos dados ao fazer uma nova chamada e não alterar os dados no processo...

 
Vladimir Pastushak:

Quando aREASON_ACCOUNT é alterada, esperava-se receber a conta anterior e terminar o trabalho com ela, logicamente, mas não, se a conta foi alterada, recebemos um novo número no deinit em REASON_ACCOUNT.

O programa deve logicamente completar o trabalho com os dados actuais e passar os novos dados ao fazer uma nova chamada, sem alterar os dados no processo...

Aqui está o código que demonstra um comportamento incorrecto

//+------------------------------------------------------------------+
//|                                                         Test.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   Print("Start ", (string)AccountInfoInteger(ACCOUNT_LOGIN));
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   if(reason == REASON_ACCOUNT)
      Print("Stop ", (string)AccountInfoInteger(ACCOUNT_LOGIN));
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---

  }
//+------------------------------------------------------------------+

Resultado

2020.10.28 17:23:05.725 Test (EURUSD,M1)        Stop 600....
2020.10.28 17:23:06.306 Test (EURUSD,M1)        Start 600....
2020.10.28 17:23:17.478 Test (EURUSD,M1)        Stop 535....
2020.10.28 17:23:18.156 Test (EURUSD,M1)        Start 535....
 
Vladimir Pastushak:

Quando aREASON_ACCOUNT é alterada, esperava-se receber a conta anterior e terminar o trabalho com ela, logicamente, mas não, se a conta foi alterada, recebemos um novo número no deinit em REASON_ACCOUNT.

O programa deve logicamente terminar de trabalhar com os dados actuais e enviar os novos dados ao fazer uma nova chamada, e não alterar os dados no processo...

Isto não é um erro e, portanto, o comportamento não mudará. Basta considerar esta peculiaridade.