Erros, bugs, perguntas - página 1812
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
"Doutor, eu tenho algo que dói!" © )
Dê-me um exemplo de tal expressão. Um reproduzível. Então, poderá dizer alguma coisa.
{
int d1;
ulong i, frac1=frac, ll1=ll, type1=type;
i=1; d1=10;
while (ll>=d1) {d1=d1*10; i=i+1;}
if (type==0 || type==2) return (frac1+ll1*Pow10frac_length+i*Pow10(frac_length+i)+
type1*Pow10(frac_length+i+1)+bs*Pow10(frac_length+i+2)+Id1_class*Pow10(frac_length+i+3));
else return(ll1+i*Pow10(i)+type1*Pow10(i+1)+bs*Pow10(i+2)+Id1_class*Pow10(i+3));
}
ulong Pow10(ulong power) // power>0
{
ulong r=10;
if (power==0) return 1;
for (ulong i=2; i<=power; i++) r=r*10;
return r;
}
O problema está na função PackMagic. variáveis externas int frac_length=2; int Pow10frac_length=100; int Id1_class=1;.
Não deu um exemplo de um erro. Em que valores dos argumentos esta função devolve o valor errado (qual?) e qual deve ser o resultado correcto?
Por exemplo:
Id1_class=1, bs=0, type=0, frac=99, ll=1, frac_length=2, Pow10frac_length=100, return return 11299.
Deve ser 1001199. Em Expert, funções em classe, conta demo em Open.
Não é um facto que o 11299 será sempre devolvido em caso de erro.
Está a tocar. Escreveu o seu código para script, deu o valor correcto (1001199) quando executado em modo de depuração, mas se eu compilar o release e o executar a partir da árvore em MT5, deu 11199 de forma constante. Consegui localizar o problema, aqui está o código de reprodução:
void OnStart()
{
ulong i = 1;
ulong a1 = Pow10(frac_length + i);
ulong a2 = Pow10(frac_length + i + 1);
ulong a3 = Pow10(frac_length + i + 2);
ulong a4 = Pow10(frac_length + i + 3);
Print(IntegerToString(a1), " ", IntegerToString(a2), " ", IntegerToString(a3), " ", IntegerToString(a4));
}
ulong Pow10(const ulong power)
{
ulong r = 10;
if (power == 0)
return 1;
for (ulong i = 2; i <= power; i++)
r = r*10;
return r;
}
No modo de depuração, funciona correctamente. Mas no início da libertação do navegador no MT5 ou produz disparates ("1000 10000 100 100 100" em vez de "1000 10000 100000 1000000") ou o MT5 pendura com a carga completa de um dos núcleos do processador.
Há duas maneiras de o corrigir. Qualquer uma destas formas:
ulong a2 = Pow10(frac_length + i + (ulong)1);
ulong a3 = Pow10(frac_length + i + (ulong)2);
ulong a4 = Pow10(frac_length + i + (ulong)3);
Quer movendo a variável global frac_length dentro da função Start().
Este é de facto um bug de compilador, escreva para o Service Desk.
Quando se passa por cima de uma análise própria publicada recentemente para um produto do Mercado, aparecem várias sugestões/acções. Se seleccionar "editar" e alterar a revisão, aparecerá um erro "Sem direitos" após clicar em "Actualizar".
Aplicação ao RS não pode ser criada -Ocorreu um erro.
Quando se passa por cima de uma análise própria publicada recentemente para um produto do Mercado, aparecem várias sugestões/acções. Se seleccionar "editar" e alterar a revisão, o erro "Sem direitos" aparece após clicar em "Actualizar".
Por favor especifique o nome e a versão do seu navegador.
No cromo 56.0.2924.87 o voo está bom, tanto com como sem refrescar manualmente a página de revisão.
Aplicação ao RS não pode ser criada -Ocorreu um erro.
Aparentemente, houve uma actualização dos princípios de verificação de fichas anti-cSRF.
No cromado, pode fazê-lo desta forma:
Prima F12 enquanto em www.mql5.com => no painel de instrumentos vá a Application => Cookies => clique em cookies => Limpe tudo de...
Por favor especifique o nome e a versão do seu navegador.
No Chrome 56.0.2924.87 o voo está bom, tanto com como sem refrescar manualmente a página de revisão.