Errores, fallos, preguntas - página 325

 
AlexSTAL:
Mierda... El terminal viene con tantos ejemplos... ...tantos ejemplos... Script SymbolInfoSample.mq5, por ejemplo
A veces basta con definir los nuevos conceptos al principio. Y sólo entonces examinar los ejemplos de programas.
 
¿Cómo puedo obtener la ruta completa del archivo de inclusión?


Hay dos funciones

__FILE__ - sólo da el nombre del archivo

MQL5_PROGRAM_PATH - da la ruta alarchivo ex5 resultante


Pregunta: ¿cómo puedo saber en qué parte del archivo mqh se encuentra?

 
En el MetaEditor, el botón "Lista de funciones en el archivo" abre la lista. Si se desplaza hacia abajo, termina en P y no se mueve más (el triángulo negro que apunta hacia abajo se vuelve inactivo), aunque también hay clases en R. Por favor, arréglalo.
 
-Alexey-:
En el MetaEditor, el botón "Lista de funciones en el archivo" abre la lista. Si se desplaza hacia abajo, termina en la P y no se mueve más (el triángulo negro que apunta hacia abajo se vuelve inactivo), aunque también hay clases con la letra R. Por favor, corrige.

Y al menos el tamaño aproximado de la lista ¿qué? Tal vez haya un límite en el tamaño de la lista...
 

No sé si es un error o si he encontrado un truco. El siguiente código funciona, pero da un aviso de que la expresión no es booleana

void OnStart()
  {
//---
   int a=3;
   int b=3;
   int c=3;
//---   
   if(a=b=c=3)Alert("a=b=c=3");
   else Alert("Условие не верно");
//---
  }
 
sergey1294:

No sé si es un error o un truco. El siguiente código funciona pero genera la advertencia de que la expresión no es booleana



¿Por qué no debería funcionar el código?

Lo único es que el operando if no se convierte en bool, esto es lo que advierte el compilador, pero por lo demás todo es correcto.

a,b,c, por cierto, pueden no ser inicializados en absoluto, ya que se asignan explícitamente en el if.

3 asignar a a, asignar a b, asignar b a c y luego comprobar si es verdadero y luego escribir Print().

Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Предупреждения компилятора
Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Предупреждения компилятора
  • www.mql5.com
Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Предупреждения компилятора - Документация по MQL5
 
sergey1294:

No sé si es un error o si he encontrado un truco. El siguiente código funciona, pero da un aviso de que la expresión no es booleana


Probablemente sea así.

void OnStart()
{
//----------------------------------------------------------------------------//
//Work variables
int a=3;
int b=3;
int c=3;
//----------------------------------------------------------------------------//
  if(a&&b&&c==3)Alert("a=b=c=3");
  else Alert("Условие не верно");
//----------------------------------------------------------------------------//
}
 

Entonces dime cómo escribir esta expresión para que no jure.

void OnStart()
  {
//---
   int a=1;
   int b=2;
   int c=3;
//---   
   if(a<b<c)Alert("a<b<c");
   else Alert("Условие не верно");
//---
  }
 
sergey1294:

Entonces dime cómo escribir esta expresión para que no joda.


if(a<b&&b<c){Print("");}

En el primer post estás haciendo operaciones de asignación, la asignación múltiple en cascada es aceptable. Aquí se trata de hacer una comparación múltiple.

SZ ya que tiene dos resultados de comparación en su salida deben ser separados por && u otro operador booleano.

 
sergey1294:

Entonces dime cómo escribir esta expresión para que no joda.


Sugiero lo siguiente.

//----------------------------------------------------------------------------//
//Work variables
int a=1;
int b=2;
int c=3;
//----------------------------------------------------------------------------//
  if(a<b&&b<c)Alert("a<b<c");
  else Alert("Условие не верно");
//----------------------------------------------------------------------------//

Nikolay va por delante de ti :)

Urain:

SZY ya que tiene dos resultados de comparación en su salida, deben ser separados por && u otro operador booleano.

En este caso sólo &&.