Errores, fallos, preguntas - página 1662

 
fxsaber:

¿Por qué la advertencia sobre un punto plano?

No hay sobrecarga de esta función con uchar. Sólo hay char. Por eso alerta si la constante es mayor que 127.
 
Sergei Vladimirov:
No hay sobrecarga de esta función con uchar. Sólo hay char. Por eso alerta si la constante es mayor que 127.
¿Por qué no se produce este error? Porque no hay sobrecarga para los arrays uchar (si la ayuda no miente).
 
Alexey Viktorov:

Si muestra valores similares a la verdad, pero cuenta con datos erróneos, resulta que el problema está en mql5 y no en el probador o el visualizador.

En general, gracias por su participación, voy a luchar contra el problema a largo plazo. Y hoy comprobaré otra sección de moneda similar. ¿Tal vez sea el problema de las garrapatas en este lugar, hhz?

Lo he comprobado. Todo cuenta bien. Al parecer, hay un error en la generación de garrapatas en un lugar concreto de la historia.
 
fxsaber:
Entonces, ¿por qué no hay ningún error? No hay sobrecarga para los arrays uchar (si la ayuda es correcta).
Esta es una pregunta válida.
 
fxsaber:
Entonces, ¿por qué no hay ningún error? Porque no hay sobrecarga para los arrays uchar (si la ayuda es correcta).
Aparentemente, porque las matrices son idénticas. La diferencia entre char y uchar es sólo en la interpretación por parte del compilador. De hecho, tampoco debería haber ninguna advertencia allí, porque nada se trunca realmente, se puede verificar.
 
Alexey Navoykov:
Aparentemente, porque las matrices son idénticas. La diferencia entre char y uchar es sólo en la interpretación del compilador. De hecho, no debería haber ninguna advertencia allí, porque nada se trunca realmente, puedes asegurarte.
Allí se copia byte a byte. Así que con todo firmado <-> sin firmar.
 
A100:

Pero éste (y los anteriores con typedef) son errores incidentales - aún no he encontrado el principal, porque no hay ningún typedef con la misma firma en el programa fuente (como en este ejemplo).

Pude hacer un script de prueba cercano al programa fuente con un error durante la ejecución

//Script1.mq5
typedef int (*GTW)( uint, uint, int );
#import "Script2.ex5"
        void f( GTW );
#import "Script3.ex5"
        int g( uint, uint, int );
#import
void OnStart() { f( g ); }
//Script2.mq5
#property library
typedef int (*GTW)( uint, uint, int );
void f( GTW ff ) export { ff( 0x1, 0x1, 0 ); }
//Script3.mq5
#property library
int g( uint, uint, int ) export
{
        Print( __FUNCSIG__ );
        return 0;
}

Resultado: llamada al puntero de función no válida en 'Script2.mq5

Y ahora el truco... - Sustituya GTW en todos los archivos por GT y compruebe el resultado.

 

Por favor, aconséjeme sobre la sintaxis, cómo reescribir correctamente una función como esta

MqlTick Func()
{
  MqlTick Tick = {0};
  
  return(Tick);
}

a algo como

MqlTick Func()
{
  return(MqlTick(0));
}

o algo así

MqlTick Func()
{
  return(new MqlTick);
}

Es decir, no escriba una parte separada que cree la estructura a devolver.

 

Recientemente (desde hace aproximadamente un mes) en las discusiones sobre los proyectos de servicio de "Trabajo", después de escribir un montón de texto con citas e ilustraciones, después de presentar todo va en ... agujero #403


El reenvío del formulario no ayuda - después de recargar la página tengo que escribir todo de nuevo

Estimado editor, ¿podría explicar qué nueva revolución se ha inventado en beneficio de los usuarios, y cómo salir de ella?
 
Alexander Puzanov:

Recientemente (desde hace aproximadamente un mes) en las discusiones sobre los proyectos de servicio de "Trabajo", después de escribir un montón de texto con citas e ilustraciones, después de presentar todo va en ... agujero #403


El reenvío del formulario no ayuda - después de recargar la página tengo que escribir todo de nuevo

Estimado editor, ¿podría explicar qué nueva revolución se ha inventado en beneficio de los usuarios, y cómo salir de ella?
En la esquina superior izquierda del editor, pulsa SIEMPRE el botón HTML, y luego CTRL+A y CTRL+C antes de enviar un mensaje grande. Así todo queda en el buffer. Y si se produce un error. Tendrás que volver a usar el botón HTML y luego CTRL+A y CTRL+V. Ahorrará mucho estrés.
Razón de la queja: