Errores, fallos, preguntas - página 2891

 
A100:

Esto puede ocurrir cuando el compilador no tiene objetivamente ninguna información:

es decir, f() puede haber inicializado i o no. Y en este caso el compilador de C++ da un aviso, pero el de MQL no.

En C++ las direcciones de las celdas de memoria no están ocultas, por eso la variable se inicializa con basura.
En Mql las direcciones de las celdas de memoria están ocultas y no son accesibles. Así es como el desarrollador de Mql se lía con el compilador ))

En resumen, inicializa siempre las variables y no te dará dolor de cabeza.
 
Roman:

Sí, pero antes de la primera iteración la variable j no está inicializada todavía, que es lo que jura el compilador.

Si no se utiliza esta variable o se pone la asignación i=j abajo en el cuerpo del bucle, lo que sería idéntico a la ejecución de la primera opción, no habrá advertencias. El compilador no comprueba la lógica del bucle y la secuencia de ejecución, comprueba la sintaxis de arriba a abajo, creo que sí, no lo sé con seguridad)

 
Hay un error en el servicio de búsqueda del sitio. Esta búsqueda no produce este resultado.
 

fxsaber:

Y en otras situaciones.

pulsar responder en lugar de hacerlo está sacudiendo el terminal - una gran innovación

 
Error de compilación:
#define  MACRO(X)\ //Error: '\' - unexpected in macro definition
              X
 
TheXpert:

Si en lugar de ello se pulsa responder, se descarga el terminal, una gran innovación.

Es todo lo mismo... Y con la pregunta por la que casi me clavan aquí (en la misma cartera del menú desplegable y en los temas no leídos - sólo hermanos gemelos), y con la tuya, y sin embargo (no sé cómo alguien) me cuelga tal... "cosa".

¿Qué hacer con esta inscripción? En ninguna parte ningún enlace para ver a quién se le pregunta y por qué, no (tal vez se encuentra en la cartera, pero no he mirado allí).

La impresión muy persistente es que todos estos "maravillosos" cambios en el sitio están siendo realizados por una persona.... Y personalmente para él. Exactamente como él cree que lo necesita para sí mismo. Y le importa un bledo nuestra opinión...

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

¿Qué hacer con esta inscripción?

No sé, cuando hay aplicaciones normales desaparece.
 

Cuando se cambiaREASON_ACCOUNT, se esperaba recibir la cuenta anterior y terminar de trabajar con ella, lógicamente, pero no, si la cuenta ha cambiado, recibimos un nuevo número en el deinit en REASON_ACCOUNT.

Lógicamente, el programa debería terminar de trabajar con los datos actuales y enviar los nuevos datos al hacer una nueva llamada y no cambiar los datos en el proceso...

 
Vladimir Pastushak:

Cuando se cambiaREASON_ACCOUNT, se esperaba recibir la cuenta anterior y terminar de trabajar con ella, lógicamente, pero no, si la cuenta ha cambiado, recibimos un nuevo número en el deinit en REASON_ACCOUNT.

El programa debe completar lógicamente el trabajo con los datos actuales y pasar los nuevos datos al hacer una nueva llamada, sin cambiar los datos en el proceso...

Este es el código que demuestra el comportamiento 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:

Cuando se cambiaREASON_ACCOUNT, se esperaba recibir la cuenta anterior y terminar de trabajar con ella, lógicamente, pero no, si la cuenta ha cambiado, recibimos un nuevo número en el deinit en REASON_ACCOUNT.

Lógicamente, el programa debería terminar de trabajar con los datos actuales y enviar los nuevos datos al hacer una nueva llamada, y no cambiar los datos en el proceso...

Esto no es un error y por lo tanto el comportamiento no cambiará. Sólo hay que tener en cuenta esta peculiaridad.

Razón de la queja: