Errores, fallos, preguntas - página 2761
![MQL5 - Lenguaje de estrategias comerciales para el terminal de cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
0xFF es probablemente convertido en 4 bytes por el compilador.
no, pero se inicializa correctamente
Buenas tardes, por favor, aconsejen cómo solucionar el problema:
Durante la optimización aparece un error:
2020.05.31 15:05:32.738 Core 7 genetic pass (0, 53) tested with error "critical runtime error 503 in OnTick function (zero divide, module Experts\e1.ex5, file e1.mq5, line 826, col 73)" in 0:00:00.153
double Mix1 = NormalizeDouble((MathAbs(ZExtLevel[0] - ZExtLevel[1]), 2)
double Mix2 = NormalizeDouble((MathAbs(ZExtLevel[1] - ZExtLevel[2])), 2);
double Mix = NormalizeDouble((Mix1/Mix2),2);
Lo que hice:
1) He multiplicado Mix1 y Mix2 para reducir el número de decimales;
2) cambio de la cantidad de dígitos en la normalización;
3) Comprobado todos los ZExtLevels para asegurarse de que no contienen 0.
No, pero se inicializa correctamente
¿Por qué estás seguro de que no? Por defecto en Entero se presenta. sizeof lo dice.
¿Por qué estás seguro de que no? El valor por defecto en Integer es presentar. sizeof dice que sí.
uint, para ser precisos.
¿Por qué estás seguro de que no? El valor por defecto en Integer es presentar. sizeof lo dice.
¿también funciona sin avisos?
Porque hay una firma correspondienteArrayInitialize
y por alguna razón desconocida no crearon ArrayInitialize() para unsigned uchar
funciona de la misma manera sin ninguna advertencia?
porque hay una firma correspondiente ArrayInitialize
y para una uchar sin signo no hicieron ArrayInitialize() por alguna razón desconocida.
No se trata de la firma o la ausencia de ella. La cuestión es que 4 bytes se convierten en 1 y teóricamente se puede perder información - esto es lo que advierte el compilador.
Prueba conArrayInitialize(c, (char)10000);
también habrá una advertencia
No se trata de la firma o de la falta de ella. La cuestión es que 4 bytes se convierten en 1, teóricamente se puede perder información - esto es lo que advierte el compilador.
Prueba conArrayInitialize(c, (char)10000);
también habrá una advertencia
Bueno, estaba claro desde el principio
La pregunta es aquí de otra manera: ¿dónde se necesita realmente el carbón?
Utilizo uchar en StringToCharArray() y CryptEncode() y si buscas en la ayuda encontrarás más
por eso puedo inicializar un array char usando ArrayInitialize, pero uchar no puedo hacerlo
ok, es un gran alboroto, dudo que cambie ;)
PS: 0xFF = 255 (1 byte)
Sí, está claro que eso fue todo desde el principio
aquí la cuestión es diferente, ¿es aquí donde se necesita realmente el carbón?
Yo uso uchar en StringToCharArray () y CryptEncode (), y si revisas la ayuda todavía hay
por eso puedo inicializar un array char usando ArrayInitialize, pero uchar no puede
ok, el noble holivar resultó, dudo que algo cambie;)
PS: 0xFF = 255 (1 byte)
Sí, de eso se trataba desde el principio.
Aquí hay otra pregunta. ¿Dónde necesitas realmente el carbón?
Uso uchar en StringToCharArray() y CryptEncode().
por eso puedo inicializar un array char usando ArrayInitialize, pero uchar no puedo hacerlo
ok, es un gran alboroto, dudo que cambie ;)
PS: 0xFF = 255 (1 byte)
No sé por qué no se puede. uchar funciona igual que char.
Has preguntado por qué recibiste la advertencia, porque 4 bytes en 1. 255 no es importante. 0 y 1 pueden ser 1 y 2 y 4 y 8 bytes)
Alain Verleyen:
revisado:
OK, funciona sin ninguna advertencia del compilador
Gracias