Erros, bugs, perguntas - página 2761
![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
0xFF é provavelmente transformado em 4 bytes pelo compilador.
não, mas inicializa-se correctamente
Boa tarde, por favor aconselhar como resolver o problema:
Durante a optimização, surge um erro:
2020.05.31 15:05:32.738 Core 7 genetic pass (0, 53) testado com erro "critical runtime error 503 na função OnTick (zero divide, módulo Experts\e1.ex5, ficheiro e1.mq5, linha 826, col 73)" em 0:00:00.153
double Mix1 = NormalizeDouble((MathAbs(ZExtLevel[0] - ZExtLevel[1]), 2)
duplo Mix2 = NormalizeDouble((MathAbs(ZExtLevel[1] - ZExtLevel[2])), 2);
dupla Mix = NormalizeDouble((Mix1/Mix2),2);
O que eu fiz:
1) Eu multipliquei Mix1 e Mix2 para reduzir o número de casas decimais;
2) alteração da quantidade de dígitos na normalização;
3) Verifiquei todos os níveis ZExtLevels para ter a certeza de que não contêm 0.
Não, mas inicializa-se correctamente
Porque tem a certeza de que não? O padrão no Integer é de apresentar. tamanhoof diz que sim.
Porque tem a certeza de que não? O padrão no Integer é de apresentar. sizeof diz que sim.
uint, para ser mais preciso.
Porque tem a certeza de que não? O padrão no Integer é de apresentar. tamanhoof diz que sim.
também funciona sem qualquer aviso?
Porque existe uma assinatura correspondenteArrayInitialize
e por alguma razão desconhecida não criaram o ArrayInitialize() para uchar não assinado
também funciona sem qualquer aviso?
porque existe uma assinatura correspondente ArrayInitialize
e por um uchar não assinado não fizeram ArrayInitialize() por alguma razão desconhecida.
Não se trata da assinatura ou ausência da mesma. A questão é que 4 bytes são convertidos em 1 e a informação pode teoricamente ser perdida - é sobre isto que o compilador alerta.
ExperimenteArrayInitialize(c, (char)10000);
haverá também um aviso
Não se trata da assinatura ou da falta dela. A questão é que 4 bytes são convertidos em 1, a informação pode teoricamente ser perdida, que é o que o compilador adverte sobre.
ExperimenteArrayInitialize(c, (char)10000);
haverá também um aviso
Bem, foi claro desde o início
A questão está aqui de uma forma diferente - onde é que precisa realmente de char?
Eu uso uchar em StringToCharArray() e CryptEncode() e se você olhar através da ajuda você encontrará mais
é por isso que posso inicializar um char array usando ArrayInitialize, mas uchar não o posso fazer
ok, isso é um grande alarido, duvido que vá mudar ;)
PS: 0xFF = 255 (1 byte)
sim, é claro que foi tudo desde o início
aqui a questão é diferente, é aqui que o char é realmente necessário?
Eu uso uchar em StringToCharArray () e CryptEncode (), e se você passar pela ajuda que ainda há
por isso posso inicializar um char array usando ArrayInitialize, mas uchar não pode
ok, o nobre holivar revelou-se, duvido que algo vá mudar;)
PS: 0xFF = 255 (1 byte)
Sim, foi disso que se tratou desde o início.
Aqui vai outra pergunta. Onde é que precisa realmente de char?
Utilizo uchar em StringToCharArray() e CryptEncode().
é por isso que posso inicializar um char array usando ArrayInitialize, mas uchar não oposso fazer
ok, isso é um grande alarido, duvido que vá mudar ;)
PS: 0xFF = 255 (1 byte)
Não sei porque não se pode. uchar funciona da mesma forma que char.
Perguntou porque recebeu o aviso, porque 4 bytes em 1. 255 não é importante. 0 e 1 pode ser 1 e 2 e 4 e 8 bytes)
Alain Verleyen:
verificado:
OK, funciona sem qualquer aviso de compilação
Obrigado