Erros, bugs, perguntas - página 1118

 
Zeleniy:
Descobri-o, tive o ficheiro de instalação durante mais de um mês, agora descarreguei um novo e está a funcionar, não pensei que o ficheiro de instalação estivesse a mudar porque está a descarregar os ficheiros certos depois.
Pelo contrário... se o antigo não estava a exibir a mesa, porque começaria a exibi-la... isso é esquisito...
 
micle:
pelo contrário... a antiga, se não exibia a placa, porque começaria a exibi-la. isso é esquisito...
Não sei, mas o novo comportou-se como de costume sem quaisquer tablets e começou a descarregar os ficheiros de instalação.
 
Zeleniy:
Não sei, mas o novo comportou-se como de costume sem quaisquer sinais e começou a descarregar ficheiros de instalação.
mística...
 
Zeleniy:
Não sei, mas o novo comportou-se como de costume sem quaisquer separadores e começou a descarregar ficheiros de instalação.

Descobri que o aparecimento de tal janela durante o processo de instalação poderia estar relacionado com a protecção no computador (aparentemente, devido a alguma actualização regular) e a subsequente manifestação peculiar desta.

Não importava se era um ficheiro de instalação anterior ou apenas descarregado.

Agora vou tomar nota, para o futuro, só por precaução, desta nova dependência para mim (não estou a experimentar agora).

Mas estou contente por o seu problema estar resolvido.

Como sugestão: Tanto quanto me lembro, houve recentemente uma actualização do terminal MT5. Talvez neste caso haja alguma ligação entre o pedido de proxy, versão desactualizada do ficheiro de instalação e o processo de instalação on-line.
 

Da lista de alterações à nova construção do MT5 de 2014.04.04 10:14:"3. Terminal: Corrigido um bug que fazia com que os objectos gráficos não fossem desenhados no gráfico em algumas condições. "Não sei se os programadores satisfizeram o meu pedido no SD #966979 ou se este é outro tipo de reparação, ou mesmo um efeito secundário de alguma melhoria na próxima construção, mas de qualquer forma estou bem com ele agora. A lista de alterações diz que foi um bug, mas na correspondência para o SD foi-me dito inequivocamente"Não é um bug, é uma limitação para poupar recursos". "

Agora pode assistir confortavelmente a TA construída em qualquer TF, como antes.

Obrigado, estou a encerrar a candidatura.

 

A constância do método pode ser anulada numa classe derivada (construir 917)

class A {
public:
        virtual void f() const {}
        int x;
};
class B : public A {
public:
        virtual void f() /*не const*/ { x = 2; }
};
void g( const A* a ) { a.f(); }
void OnStart()
{
        A *a = new B();
        a.x = 1;
	Print( a.x ); //результат = 1
        g( a );
        Print( a.x ); //результат = 2, а обещали, что g( const A* ) не может менять объект
        delete( a );
}

Outro exemplo

class A {
public:
        virtual void f() const { Print( "1" ); }
};
class B : public A {
public:
        virtual void f()       { Print( "2" ); }
};
void g( const A* a ) { a.f(); }
void OnStart()
{
        A *a = new B();
        g( a );
        delete( a );
}

Resultado= 2, mas em C++ resultado = 1

O erro não está no facto de numa classe derivada não se poder declarar um método com o mesmo nome que na classe base (o que é permitido), mas que C++ os considera diferentes e que MQL considera que B::f() anula A::f() const

 

A função de impressão() produz sinais flutuantes sem números como não-sinais, o que é ilógico, porque as duas saídas são normalmente duplas.

O flutuador deve: 1) remover o prefixo Q dos números sem sinal e depois os números de sinal e sem sinal serão impressos de forma idêntica, ou 2) os números de sinal de saída com prefixo S. Se eu estiver errado, por favor dê-me um exemplo de sinal flutuante sem número que seria impresso pela função Print() sem prefixo Q

Por exemplo, pego num sinal duplo sem número, converto-o para flutuar e saio tanto através de Print(). No primeiro caso imprime SNAN, no segundo QNAN

 

No processo de procurar as formas de escrever dados no ficheiro a partir do testador, eis um erro (abreviado, porque não encaixava):

2014.04.08 01:47:30.531 2013.07.01 02:10:00   00: 0x000000013FD1F038
2014.04.08 01:47:30.531 2013.07.01 02:10:00                 000000013 FD1F04D 498 BCD            mov        rcx, r13
2014.04.08 01:47:30.531 2013.07.01 02:10:00                 000000013 FD1F04A 41 B001            mov        r8b, 0x1
2014.04.08 01:47:30.531 2013.07.01 02:10:00                 000000013 FD1F043 80 BD3804000000    cmp        byte [rbp+0x438], 0x0
2014.04.08 01:47:30.531 2013.07.01 02:10:00                 000000013 FD1F040 83 C202            add        edx, 0x2
2014.04.08 01:47:30.531 2013.07.01 02:10:00                 000000013 FD1F03D 418 BD4            mov        edx, r12d
2014.04.08 01:47:30.531 2013.07.01 02:10:00   
2014.04.08 01:47:30.531 2013.07.01 02:10:00                 000000013 FD1F03B EB03              jmp        0x13fd1f040
2014.04.08 01:47:30.531 2013.07.01 02:10:00      crash -->  000000013 FD1F038 8 B50FC            mov        edx, [rax-0x4]
2014.04.08 01:47:30.531 2013.07.01 02:10:00   
2014.04.08 01:47:30.531 2013.07.01 02:10:00                 000000013 FD1F033 4885 C0            test       rax, rax
[cut]
2014.04.08 01:47:30.531 2013.07.01 02:10:00                 000000013 FD1EE6E 55                push       rbp
2014.04.08 01:47:30.531 2013.07.01 02:10:00                 000000013 FD1EE67 4 C894018          mov        [rax+0x18], r8
2014.04.08 01:47:30.531 2013.07.01 02:10:00                 000000013 FD1EE63 48895808          mov        [rax+0x8], rbx
2014.04.08 01:47:30.531 2013.07.01 02:10:00                 000000013 FD1EE60 488 BC4            mov        rax, rsp
2014.04.08 01:47:30.531 2013.07.01 02:10:00   Access violation at 0x000000013FD1F038 read to 0x00000003FFFFFFFF

Isto é, claro, compreendo que este erro é um resultado natural da minha falta de jeito. E em qualquer caso foi rapidamente resolvido (o problema foi numa tentativa de passar dados que não fossem string para FileWrite via terceira função, se necessário - posso descrevê-lo com mais detalhes). Mas o erro não parece muito claro e um pouco assustador :) e o compilador não insinua em lado nenhum que se espera dele. Talvez devêssemos pelo menos acrescentar algum tipo de deformação ou algo assim...

 
Lone_Irbis:

No processo de procurar as formas de escrever dados no ficheiro a partir do testador, eis um erro (abreviado, porque não encaixava):

Isto é, claro, compreendo que este erro é um resultado natural da minha falta de jeito. E em qualquer caso foi rapidamente resolvido (o problema foi numa tentativa de passar dados que não fossem string para FileWrite via terceira função, se necessário - posso descrevê-lo com mais detalhes). Mas o erro não parece muito claro e um pouco assustador :) e o compilador não insinua em lado nenhum que se espera dele. Talvez devêssemos pelo menos acrescentar algum tipo de deformação ou algo assim...

Sim, por favor descreva-o com mais detalhes.

Interessado na construção, SO, bit rate, configurações do testador. Por favor, anexe o código para reprodução.

Obrigado.

 

OK, vou tentar. Consegui voltar ao momento certo e reproduzi-lo, mas não consigo isolar o insecto e reproduzi-lo separadamente...

Construir: MetaTester 5 x64 construir 910 (07 Mar 2014) https://dl.dropboxusercontent.com/u/61587787/bugreport/build.png

Ambiente de trabalho Win7 x64 https://dl.dropboxusercontent.com/u/61587787/bugreport/system.png

copiado da janela do testador: https://dl.dropboxusercontent.com/u/61587787/bugreport/log.txt

screenshots do testador (bem, nunca se sabe):https://dl.dropboxusercontent.com/u/61587787/bugreport/tester1.pnghttps://dl.dropboxusercontent.com/u/61587787/bugreport/tester2.png

configurações do testador (não sei se sei o que quero dizer):https://dl.dropboxusercontent.com/u/61587787/bugreport/config.png

Código snippet:

   int idx = 133;
   WriteCSV("test.csv",idx);
   
class Core { 
public:  
   void     WriteCSV(string FileName, string s1, string s2, string s3, string s4, string s5, string s6);
};

void Core::WriteCSV(string FileName, string s1, string s2="", string s3="", string s4="", string s5="", string s6=""){
   int handle = FileOpen(FileName,FILE_CSV|FILE_WRITE|FILE_SHARE_WRITE|FILE_UNICODE|FILE_COMMON,"~");
   if(handle == INVALID_HANDLE) Print("error");
   else FileWrite(handle,s1,s2,s3,s4,s5,s6);
   FileClose(handle);
}

Se substituir porWriteCSV("test.csv",(string)idx); - o erro desaparece. Outras variáveis que não são de corda não fazem nada aqui. No entanto, não parece fazer diferença o que idx equivale (é apenas o número de série das notícias na matriz). Reproduzido em qualquer notícia ao tentar salvar o resultado. Dos avisos, apenas aconversão implícita de "número" para "corda" é impressa, mas mais uma vez, apenas neste caso se transforma num acidente.

Eu não quero realmente publicar o código completo e .set para ele aqui, mas posso enviá-lo para algum lugar.