Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 156
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
1) ¿por qué no inicializar inmediatamente al declarar int err=0 ?
2) no lo he comprobado, pero según la documentación err se almacena en alguna variable, que se pone a cero automáticamente cuando se utiliza la función GetLastError(),
y también cambia siempre cuando se utilizan algunas funciones (sobre todo las terminales)
3) Esta es la razón por la que GetLastError() dio un valor de 0 después de referirse a un número de ticket inexistente en OrderSelect:
"Las otras funciones no cambian el valor de la variable last_error bajo ninguna condición. ................., OrderSelect, ...................."
A menudo declaraba una variable como esta dentro de las funciones:
Más adentro, en alguna condición ya lo llamo para ver si hay un error. Bueno, no soy sólo yo, sino muchos otros lugares en el código que he encontrado. Por lo tanto, es una situación típica. Hoy he pensado que no es lógico declarar la misma variable cada vez en cada función en la que quieras controlar los errores. Lo pensé y llegué a la conclusión de que es más fácil declarar globalmente una vez e inicializarlo en el init. Es así:
Y además, cuando se necesita llamar a la variable err en funciones de usuario, sabiendo que ya tiene un valor. De hecho, GetLastError() emite el código del último error, así que si esta variable err es llamada en cada función al final de todos los cálculos, que es responsable de emitir el código de error, y llama a GetLastError(), entonces todo será correcto, ¿verdad?
Pero si no se llama a esta variable al final de alguna función (siguiendo la cadena de ejecución del código), no se reiniciará, y podría ser una ejecución errónea, en caso de que hubiera un error en la cadena de ejecución anterior, pero no en la actual, pero el código de error se devuelve en último lugar... Y para restablecerlo, hay que llamar a esta función GetLastError(). Es decir, aquí todo depende de si se ha convocado o no. Si no estás seguro de que vaya a estar en todas partes, es más fácil reasegurar y reajustar cada vez, ¿no?
Puedes declararlo globalmente, y luego en start() antes de llamar a GetLastError() reiniciarlo, por ejemplo
1) ¿por qué no inicializar inmediatamente al declarar int err=0 ?
2) no lo he comprobado, pero según la documentación err se almacena en alguna variable, que se pone a cero automáticamente cuando se utiliza la función GetLastError(),
y también cambia siempre cuando se utilizan algunas funciones (sobre todo las terminales)
3) Esta es la razón por la que GetLastError() dio un valor de 0 después de referirse a un número de ticket inexistente en OrderSelect:
"Las otras funciones no cambian el valor de la variable last_error bajo ninguna condición. ................., OrderSelect, ...................."
Puedes declarar err globalmente, y luego ponerlo a cero en start() antes de llamar a GetLastError(), por ejemplo
entonces ya hay un problema lógico. A menos que se llame constantemente a GetLastError()(teóricamente al final de cada función de usuario).
A veces hay que llamar más a menudo
Víctor (hoz), no entiendo tu alboroto con el último error.
Declare la función para el manejo de errores y llámela cuando sea necesario. Todo será local y podrá utilizarse en cualquier lugar.
Víctor (hoz), no entiendo tu alboroto con el último error.
Declare la función para el manejo de errores y llámela cuando sea necesario. Todo será local y podrá utilizarse en cualquier lugar.
Es comprensible. Pero esta función será llamada cuando la necesite, es decir, cuando quiera comprobar si hay un error. Pero si hubo un error en algún lugar antes y no hay ningún error en este momento, devolverá el error anterior... Porque en tu función Vadim, la variable LastError no se pone a cero , al llamar a GetLastError(). Esta es la cuestión...
Es comprensible. Pero esta función será llamada cuando la necesite, es decir, cuando quiera comprobar si hay un error. Pero si hubo un error en algún lugar antes, y en este momento no hay ningún error, devolverá el error anterior... Porque en tu función Vadim, la variable LastError no se pone a cero , al llamar a GetLastError(). Esa es la cuestión...
No debe ponerse a cero. Debería existir el hábito de comprobar los errores en todas partes después de las funciones. También debes hacer que la llamada se desactive. Para que no se ralentice en el modo de combate. Es decir, es un depurador de este tipo.
La excepción, por supuesto, son los errores que hay que analizar, para tomar una decisión.
Eso es comprensible. Pero esta función será llamada cuando la necesite, es decir, cuando quiera comprobar si hay un error. Pero si hubo un error en algún lugar antes y no hay ningún error en este momento, devolverá el error anterior... Porque en tu función Vadim, la variable LastError no se pone a cero , al llamar a GetLastError(). Este es el punto...