Errores, fallos, preguntas - página 1647

 
Vasiliy Sokolov:

Por favor, explique el siguiente comportamiento:

¿Es estable y en todo momento o en el primer tick del indicador de funcionamiento?

Falta el valor _LastError en la ventana de wotch

 
Alexey Navoykov:

¿Está seguro?

y al mismo tiempo¿Cómo lo sabes? Si lo primero es igual, lo segundo será igual.
Ejemplo para ambas plataformas
// MQL4&5-code

#ifdef __MQL5__
  #define show_inputs script_show_inputs
#endif

#property show_inputs
#property strict

sinput double Price1 = 1.234566;
sinput double Price2 = 1.234574;

void NormToConsole( const double Price, const int digits, const string Str )
{
  Print("NormalizeDouble(" + Str + "(=" + DoubleToString(Price, digits + 1) +
        "), " + (string)digits + ") = " + DoubleToString(NormalizeDouble(Price, digits), digits));
}

#define  NORM2CONSOLE(PRICE) NormToConsole(PRICE, 5, #PRICE);

void OnStart()
{  
  NORM2CONSOLE(Price1);
  NORM2CONSOLE(Price2);
  NORM2CONSOLE(Price2 - Price1);    
}
Resultado
NormalizeDouble(Price1(=1.234566), 5) = 1.23457
NormalizeDouble(Price2(=1.234574), 5) = 1.23457
NormalizeDouble(Price2-Price1(=0.000008), 5) = 0.00001
 

Error de compilación

void f( int& i ){ Print( i ); }
void OnStart()
{
        int a, b;
        f( a = 5 ); //error: '=' - parameter passed as reference, variable expected
        f( b = a ); //error: '=' - parameter passed as reference, variable expected
}
 
A100:

Error de compilación

void f( int& i ){ Print( i ); }
void OnStart()
{
        int a, b;
        f( a == 5 ); //error: '=' - parameter passed as reference, variable expected
        f( b == a ); //error: '=' - parameter passed as reference, variable expected
}
 
Vitalii Ananev:
En tu ejemplo el error está justificado, mi caso es diferente
 
A100:
En tu ejemplo el error está justificado, en mi caso es diferente

No leí el código con atención y automáticamente pensé que tenías una sentencia condicional if, pero sólo tienes una función llamada f.

Debe pasar una variable o algún valor precalculado a la función, no una expresión.

void f( int& i ){ Print( i ); }
void OnStart()
{
        int a = 5;
        int b = a;
        f(a); //error: '=' - parameter passed as reference, variable expected
        f(b); //error: '=' - parameter passed as reference, variable expected
}
 
Vitalii Ananev:

Tienes que pasar una variable o algún valor precalculado a la función, no una expresión.

¿Cuál es la diferencia?

//1.mq5
         a = 5;
         f( a );
//2.mq5
         f( a = 5 );
 
A100:

¿Cuál es la diferencia?

En el primer caso, se pasa una variable, en el segundo, el resultado de la operación. Y quién sabe lo que se ha inventado allí para inta

De hecho, este error de referencia ha sido molesto durante mucho tiempo, no debería estar ahí en absoluto.

 
A100:

¿Cuál es la diferencia?

La diferencia es que en el primer caso no hay error :)
 

Hay algunas sugerencias sobre la función ArrayResize. Necesitamos añadir la posibilidad de establecer el parámetroreserve_size a -1, lo que significaría utilizar el valor establecido anteriormente. Entoncesno tendríamos que almacenar o llevar este valor. Sería suficiente con redimensionarlo primero con la reserva requerida, y luego no preocuparse más por ello .De lo contrario, es un inconveniente constante, cuando se pasa un array a alguna función, que lo redimensiona, pero no sabe nada de la reserva preestablecida en él, y como resultado lo agota, llevando a reasignaciones de memoria innecesarias más tarde . Después de todo, supongo, este valor se almacena en algún lugar para un array. ¿O no?