Erros, bugs, perguntas - página 1205

 
ozhiganov:

Todos os terminais dos corretores deixaram de funcionar, incluindo o que descarreguei deste site...

Reiniciar não ajuda, reiniciar e reinstalar também, tudo estava a funcionar bem antes, não instalei nada no meu computador, também não instalei nada no terminal. apenas compras no mercado.

Tirar os indicadores de funcionamento e EAs peça por peça para ver qual é o problema.

Clique em "Detalhes" na janela de descrição de erros para descobrir os detalhes. Copie aqui o texto completo, por favor.

 

vazio, sem um único indicador e terminal EA, a mesma coisa...

 
Renat:

Capturar os indicadores de funcionamento e EAs peça por peça para ver qual é o problema.

Clique no botão "Detalhes" na janela de descrição de erros para obter detalhes. Copie aqui o texto completo, por favor.

Presumo que o queira?

crash --> 000007FCE8441F4F 48396B10 cmp [rbx+0x10], rbp

000007FCE8441F53 7530 jnz 0x7fce8441f85


000007FCE8441F55 488B03 mov rax, [rbx]

000007FCE8441F58 4C8BCF mov r9, rdi

000007FCE8441F5B 4D8BC7 mov r8, r15

000007FCE8441F5E 8BD6 mov edx, esi

000007FCE8441F60 488BCB mov rcx, rbx


#021 00000000000011C8 EIP: 0000000000000000 ESP: 00000000000000000000


#022 0000000000001068 EIP: 000007FCF54245DB ESP: 0000006818CFFAC8

000007FCF54245D1:00000A [000007FCF54245DB] NtYieldExecution (ntdll.dll)

000007FCF5426E50:000833 [000007FCF5427683] RtlUnicodeStringToInteger (ntdll.dll)

000007FCF3681828:00001A [000007FCF3681842] BaseThreadInitThunk(kernel32.dll)

000007FCF54774E8:000021 [000007FCF5477509] RtlVerifyVersionInfo (ntdll.dll)


#023 000000000000111C EIP: 000007FCF54245DB ESP: 0000006818E5FB18

000007FCF54245D1:00000A [000007FCF54245DB] NtYieldExecution (ntdll.dll)

000007FCF5426E50:000833 [000007FCF5427683] RtlUnicodeStringToInteger (ntdll.dll)

000007FCF3681828:00001A [000007FCF3681842] BaseThreadInitThunk (kernel32.dll)

000007FCF54774E8:000021 [000007FCF5477509] RtlVerifyVersionInfo (ntdll.dll)

 
Enviei o texto completo por mensagem privada
 

Ao analisarmos o exemplo anterior, descobrimos uma diferença crucial entre MQL e C++

class A {};
class B : public A {};
class C {
public:
        virtual int g( A* a ) { return ( 1 ); }
        virtual int g( B* b ) { return ( 2 ); } //здесь полное совпадение
};
class D : public C {
public:
        virtual int g( A* a ) { return ( 3 ); }
};
void OnStart()
{
        B* b = new B;
        D* d = new D;
        Print( d.g( b ));
}

Em MQL(build 978) o resultado é: 2 (C::g é chamado), e em C++ o resultado é: 3 (D::g é chamado)

Assim, acontece que o MQL dá prioridade a uma correspondência exacta do tipo do argumento, mesmo que seja numa classe base, enquanto o C++ dá prioridade à classe mais próxima possível que pode não ter uma correspondência exacta do tipo, mas pode ter uma conversão implícita do tipo.

Por favor verifique os resultados em compiladores recentes de C++ e, se a diferença for confirmada, decida de preferência a favor de C++ para efeitos de unificação.

 
ozhiganov:
Enviei o texto completo numa mensagem privada.
Obrigado, vamos analisar o assunto.
 

Será que o construtor de cópias e o operador de cessão estão sequer planeados no futuro?

A classe base A tem 15 campos, tem dois descendentes B e C - cada um tem +5 campos a mais.

E o resto é uma busca de 20 minutos.

 

Fórum sobre comércio, sistemas automatizados de comércio e testes de estratégia comercial

Insectos, insectos, perguntas

A100, 2014.08.29 16:28

Erro na saída por impressão(...)

void OnStart()
{
        const int n = 300;
        Print( "n=", n );
        for ( int i = 0; i < n; i++ )
        {
                Print( i );
                if ( i == 0 )
                        Sleep( 2000 );
        }
}

na impressão, a primeira parte da produção salta de 1 a 53 (cada vez uma parte diferente - sem padrão claro), por vezes salta no meio

depois imprime até 299 sem saltos

Se tiver algum tempo, por favor tente executá-lo e se houver algum salto na saída, escreva-me. Se não saltar - tente aumentar n (comecei a saltar a n >= 300) e/ou remover

        if ( i == 0 )
                Sleep( 2000 );

A pedido #1060016 | 2014.08.29 16:30https://www.mql5.com/ru/users/A100/servicedesk/closed/14774

Surgiu uma questão "Como informar sobre uma impressão em salto? - A opção mais simples é uma única linha com uma elipse no lugar das linhas saltadas

Quando o utilizador vê esta linha, compreende que existem omissões e necessita de consultar o ficheiro .log (não são necessários números de linha - apenas como exemplo)
 
A100:

Ao analisarmos o exemplo anterior, descobrimos uma diferença crucial entre MQL e C++

Em MQL(build 978) o resultado é: 2 (C::g é chamado), e em C++ o resultado é: 3 (D::g é chamado)

Assim, acontece que o MQL dá prioridade a uma correspondência exacta do tipo do argumento, mesmo que seja numa classe base, enquanto o C++ dá prioridade à classe mais próxima possível que pode não ter uma correspondência exacta do tipo, mas pode ter uma conversão implícita do tipo.

Por favor verifique os resultados em compiladores recentes de C++ e, se a diferença for confirmada, decida de preferência a favor de C++ para efeitos de unificação.

É isso mesmo. A prioridade é dada a uma correspondência exacta. E é realmente correcto.

Porque é que precisamos dessa unificação? Unificação do processamento de programas mal concebidos

 
ALXIMIKS:

Será que o construtor de cópias e o operador de cessão estão sequer planeados no futuro?

A classe base A tem 15 campos, tem dois descendentes B e C - cada um tem +5 campos a mais.

E o resto é uma busca de 20 minutos.

Sim, iremos, mas num futuro próximo ainda não está nos planos.