¡¡¡Vamos SetLastError!!!

 

GetLastError() borrará la variable especial last_error. Y así se ocultará todo lo posible excepto lo esperado si (GetLastError() == 4066) por ejemplo.

Quiero usar last_error mismo, pero es invisible.

La variable _LastError() no se pone a cero en MT5 GetLastError(). ¡Gracias a Dios! Para ello se ha inventado ResetLastError().

Y también hemos añadido la función SetUserError(user_error) que numera los errores del usuario de la siguiente manera:

_LastError = 65536 + user_error.

Obviamente, una variable se utiliza para almacenar el último error, por lo que es esencialmente un ajuste innecesario.

Podrías añadir simplemente SetLastError y sería suficiente. Lo ideal es dar visibilidad a last_error.

Un programador avanzado entendería por sí mismo cómo numerar sus errores, mientras que para el resto GetLastError es más que suficiente.

Realmente echo de menos esta función en MT4, ¿qué debo hacer?

 
vit46:

GetLastError() borrará la variable especial last_error. Y así se ocultará todo lo posible excepto lo esperado si (GetLastError() == 4066) por ejemplo.

Quiero usar last_error mismo, pero es invisible.

La variable _LastError() no se borra en MT5 GetLastError(). ¡Gracias a Dios! Para ello se ha inventado ResetLastError().

Y también hemos añadido la función SetUserError(user_error) que numera los errores del usuario de la siguiente manera:

_LastError = 65536 + user_error.

Obviamente, una variable se utiliza para almacenar el último error, por lo que es esencialmente un ajuste innecesario.

Podrías añadir simplemente SetLastError y sería suficiente. Lo ideal es dar visibilidad a last_error.

Un programador avanzado entendería por sí mismo cómo numerar sus errores, mientras que para el resto GetLastError es más que suficiente.

Realmente echo de menos esta función en MT4, ¿qué debo hacer?

Se puede prescindir de GetLastError().Todos los posibles errores, excepto el esperado , serán ocultados por las manos torcidas de un programador "avanzado". ¿Hay alguna forma especial de ser "avanzado" realmente necesaria para guardar el valor del error en una variable y sólo entonces analizarlo?
 
VladislavVG:
Se puede prescindir de GetLastError().Todos los posibles errores, excepto el esperado , serán ocultados por las manos torcidas de un programador "avanzado". ¿Hay alguna forma especial de "programación avanzada" realmente necesaria para guardar el valor del error en una variable y sólo entonces analizarlo?

La gestión de errores es la esencia misma de la programación. Subestimas algo... Utilizo muchas funciones en un programa en diferentes archivos y quiero comprobar un error específico en una función sin anular otros posibles errores que puedan haberse producido antes en otras funciones en general... Ya he resuelto este problema en realidad... No era tan difícil sustituir el miserable GetLastError que borra lo que hay que guardar por dos simples funciones ....SetError y GetError ... pero siempre tendría que activarlas...
 
vit46:

La gestión de errores es la esencia misma de la programación. Estás subestimando algo... Utilizo muchas funciones en un programa en diferentes archivos y quiero que la comprobación de un error específico en una función no anule otros posibles errores que puedan haber ocurrido antes en otras funciones... Ya he resuelto este problema en realidad... No era tan difícil sustituir el miserable GetLastError que borra lo que hay que guardar por dos simples funciones ....SetError y GetError ... pero siempre tendría que activarlas...

¿Qué le impide gestionar los errores por lugar y momento de ocurrencia en lugar de acumularlos? Por cierto, si necesitas acumular - haz una matriz, llénala - y luego analízala en el lugar que necesites. En ambos casos, getLastError() será suficiente.

En cuanto a la esencia de la programación, bien hecho, gracias ......

 
Bueno, si no entiendes algo, es tu problema :) Personalmente, me aburre prever cualquier caso e insertar GetLastError en cualquier lugar donde pueda producirse un error. (¿Y dónde más puede ocurrir?) Escribo el código, en la medida de lo posible, sin errores. Pero hay algunas situaciones específicas como el error 4066 que puede ocurrir cuando quiera y no depende de mí. Y tengo que escribir código de manejo para tales errores. Pero este malvado GetLastError anula todos los errores y no pasan por todo el programa. Compruebo los errores sólo una vez al final, ¿no lo ves? ¿Por qué crees que MT5 lo ha hecho casi como yo quiero? Probablemente por mi petición :)
 
...y también necesitan la gestión de excepciones, no pueden vivir sin ella...
 
Integer:
...y también necesitan la gestión de excepciones, no pueden vivir sin ella...

y el reparto explícito de tipos:)
 
vit46:
Personalmente, me aburre prever cualquier caso e insertar GetLastError en cualquier lugar donde pueda producirse un error.

realmente, ¿por qué harías eso?

El error debe tratarse en el momento en que se produce.

Entiendo que usted escribe estas construcciones:

OrderSend(...);

if(GetLastError()>0) { ... }

no está bien.

 

vit46:

Bueno, si no entiendes algo, es tu problema :) Personalmente, me aburre prever cualquier caso e insertar GetLastError en cualquier lugar donde pueda producirse un error. (¿Y dónde más puede ocurrir?) Escribo el código, en la medida de lo posible, sin errores. Pero hay algunas situaciones específicas como el error 4066 que puede ocurrir cuando quiera y no depende de mí. Y tengo que escribir código de manejo para tales errores. Pero este malvado GetLastError anula todos los errores y no pasan por todo el programa. Compruebo los errores sólo una vez al final, ¿no lo ves? ¿Por qué crees que MT5 lo ha hecho casi como yo quiero? Probablemente por mi petición :)

........
y la conversión explícita de tipos :)
:) Te explico lo que no entiendes si no te llegan las indirectas: los avanzados son avanzados porque saben aprovechar las oportunidades que se les brindan.... Si no tienes suficiente con las oportunidades que se te ofrecen, escribe sobre las ventajas. ¿Cuál es el problema?
 
VladislavVG:
:) Permíteme explicarte lo que no entiendes, ya que las pistas no te llegan: los avanzados lo son porque saben aprovechar las oportunidades que se les brindan.... Si no tienes suficiente con las oportunidades que se te ofrecen, escribe en los puntos positivos. ¿Cuál es el problema?

Ya he escrito que he resuelto este problema. Es una desventaja del lenguaje MQL4, es más fácil añadirle una función... No estoy sugiriendo cambiar
 
sergeev:

realmente, ¿por qué harías eso?

El error debe tratarse en el momento en que se produce.

Entiendo que usted escribe estas construcciones:

OrderSend(...);

if (GetLastError()>0) { ... }

esto es incorrecto.



No, yo escribo así:

OrderSend(...);

if (GetError()==конкретный номер){
         // код обработки сброс ошибки или наоборот
         SetError(0);
         }
else if(...)
...
...
// и в конце программы
if (GetError()) >0){
        // гдето необработанное исключение или ошибка номер...
        // просто сообщение об ошибке
        }