Errores, fallos, preguntas - página 1204

 

No se imprime nada

string g( string str = __FUNCTION__ ) { return ( str ); }
void OnStart()
{
        Print( g() );
}

¿Por qué no?

 
marketeer:
En general, la investigación continua ha dado estos resultados. Al poner el cursor del ratón sobre los tickers en la revisión del mercado, aparece el tooltip, en el que aparece Trade: No. Pero para los CFD rusos, que se muestran en negro, aparece Trade: Close (una vez más hay que tener en cuenta que el tiempo es el comercio y los ticks del símbolo vienen en este momento). De lo que deduzco que el broker tiene varios niveles de operaciones prohibidas, de las cuales sólo algunas (o incluso sólo una) están marcadas en gris, y todas las demás están amontonadas en un montón común con los símbolos activos, ya que se muestran en negro.

Cerrar sólo en el tipo de operación significa permitir sólo el cierre de las posiciones existentes. Por lo tanto, se muestra en negro activo.

Los modos de funcionamiento se configuran en el servidor de operaciones.

 
Renat:

Cerrar sólo en el tipo de operación significa permitir sólo el cierre de las posiciones existentes. Por eso se muestra activo en negro.

Los modos de funcionamiento se configuran en el servidor de comercio.

No dice "Sólo cerrar", sino "Cerrar". ¿Se trata de un error o hay otros matices que no están claros?
 
marketeer:
No dice "Sólo cerrar", sino "Cerrar". ¿Se trata de un error o hay otros matices que no están claros?
Cerrar significa aquí sólo cerrar. Sólo se escribe corto.
 
class object_line : public CObject
{
public:
   static color line_color_befor;
};
static extern color object_line::line_color_befor = clrGreen;

void OnChartEvent(const int id,                            
                  const long& lparam,   
                  const double& dparam, 
                  const string& sparam){
   if (id == CHARTEVENT_OBJECT_CREATE)   
      Alert(object_line::line_color_befor);   
} 

1. Compilado por

2. Cuando se crea un objeto, la alerta es clrBlack.

3. Comprobado en la compilación 4. 670

 
A100:

No se imprime nada

¿Por qué no?

Gracias por el mensaje.
No se pueden utilizar las macros __FUNCTION__ y __FUNCSIG__ fuera del cuerpo de una función.

Añadido nuevo error de compilación: 377 "la macro no puede aparecer fuera del cuerpo de una función".
 
ALXIMIKS:

1. Compilado por

2. Cuando se crea un objeto, la alerta es clrBlack.

3. Comprobado en la compilación 4. 670

Gracias por el mensaje. Error en el compilador corregido, su código compilará con error:
'line_color_befor' - redefinition; different type modifiers
Utilice el siguiente código para solucionar este error:
#include <object.mqh>

class object_line : public CObject
{
public:
   static color line_color_befor;
};

color input line_color_param=clrGreen;//object_line::line_color_befor

static color object_line::line_color_befor = line_color_param;

void OnChartEvent(const int id,                            
                  const long& lparam,   
                  const double& dparam, 
                  const string& sparam){
   if (id == CHARTEVENT_OBJECT_CREATE)   
      Alert(object_line::line_color_befor);   
} 
 
A100:

Error durante la ejecución: fundición incorrecta de punteros (compilación 977, pero ya ocurría de vez en cuando)

Si mueves algo (por ejemplo, intercambiar declaraciones #import) o haces 2 archivos en lugar de 3 o eliminas la llamada h() - entonces en lugar de los errores especificados ocurren otros errores

Si reordena el código anterior, acabará llamando a R::y en lugar de a L::y

En una versión más compleja, algunas funciones comunes de los módulos son llamadas antes (!) de los propios constructores estáticos (como si en el ejemplo anterior se llamara a f() antes de X::X, que a su vez es llamado correctamente antes de OnStart). Intentaré citar un ejemplo, pero hay archivos enormes. Pero a veces funciona correctamente, así que el error no es mío porque el orden de creación de los objetos lo define el propio compilador y no puedo cambiarlo

Gracias por el post Hay un problema, se está investigando.

UPD: Corregido.
 
mql5:
Gracias por el post Hay un problema, lo estamos solucionando.

UPD: Corregido.

Cometí un error allí https://www.mql5.com/ru/forum/1111/page1221#comment_1070267, no especifiqué que las funciones son virtuales - si ahora declaran R y L así:

class R { public:
        virtual void y( A* a ) const { PF       ((B *)a).g( 1 ); }
};
class L : public R { public:
        virtual void y( A* a )       { PF       ((B *)a).g( 2 ); }
};
entonces se llama a L::y y se debería llamar a R::y porque son diferentes - (diferentes por const y el puntero era a R)
 

Todos los terminales de los corredores han dejado de funcionar, incluido el que descargué de este sitio...

Reiniciar no sirve de nada, reiniciar y reinstalar también, antes todo funcionaba bien, no instalé nada en el ordenador, tampoco instalé nada en el terminal. sólo compras en el mercado.