¡¡¡Vamos SetLastError!!! - página 4

 
sergeev:

Todavía no has escrito cómo tu sugerencia ayudará a mejorar el MQL. Hasta ahora sólo son peticiones desnudas, que sólo tú necesitas, con un propósito poco claro.

Ya escribí al principio que MQL5 tiene ese efecto, mientras que en MQL4 se puede mejorar dando visibilidad a last_error. Una vez más, he resuelto el problema por segunda vez con dos funciones caseras. No se trata de last_error sino de first last error más la posibilidad de códigos de error personalizados como en MQL5.
 
Roger:

Esto no es bueno, porque si tuvo un error de una operación anterior y no lo manejó, entonces si no hay error en la operación actual, manejará la anterior.

Sí, todo está bien si no se llama a GetLastError sino desde una función que devuelve un error falso y que ya ha cambiado el código de un posible error anterior por uno nuevo.
 
vit46:

Sí, todo está bien si no se llama a GetLastError sino desde una función que devuelve un error falso y que ya ha cambiado el código de un posible error anterior por uno nuevo.

Comprobando el error en una función adicional, simplemente lo anulas. Sin embargo, si tiene lugares de código en los que no se comprueba si hay un error pero puede ocurrir, puede encontrarse con un error inapropiado.
 
Roger:

Al comprobar el error en la función adicional, lo está despejando.


No, no lo voy a despejar:

// глобально видимая переменная для всей программы
int last_error_fifo = 0;

int GetError()
   {
   if (last_error_fifo == 0)
      {
      last_error_fifo = GetLastError();
      }
   return(last_error_fifo);
   }

void SetError(int errcode)
   {
   last_error_fifo = errcode;
   // Это можно делать и напрямую, но только установку ошибки или сброс.
   // Для чтения ошибки только GetError() иначе GetLastError не сработает.
   }
 

¿Alguien puede recomendar la función de gestión de errores más decente (en su opinión)?

 
charter:

¿Alguien puede recomendar la función de gestión de errores más decente (en su opinión)?


No hay mucho que elegir... hazlo con lo que tienes... o no hacer una llamada incondicional a GetLastError
 
vit46:


No, no lo reinicio:


¿Qué es esto?

last_error_fifo = GetLastError();
 
vit46:

No es realmente una elección... hacer con lo que tenemos... o no hacer una llamada incondicional a GetLastError

No, no me refiero a la información sobre el error, sino al "comportamiento correcto" del EA cuando se produce/detecta un error.
 
Roger:


¿Qué es esto?


No es una puesta a cero incondicional, sino sólo si last_error_fifo == 0. En resumen, es lo mismo que los huevos en el perfil. comprobar lo que la función devuelve antes de comprobar los errores.
 
charter:

No, no me refiero a la información sobre el error, sino al "comportamiento correcto" del EA cuando se produce/detecta un error.

Depende de su lógica. Al fin y al cabo, puede manejar todos los errores, y sólo puede manejar los que son importantes en una situación determinada.
Razón de la queja: