Erros, bugs, perguntas - página 1337

 
Vladimir Pastushak:

Os programadores não são sem humor.

Parece-me um "download", e uma espécie de "download" de árvores balançam para a direita ou para a esquerda.

Se "balançar", pode também compará-lo a uma árvore: "direita/esquerda" - também tem humor (confundir "direita/esquerda")
 
Artyom Trishkin:
Se "balançar", poderia tê-lo comparado a uma árvore: "direita/esquerda" - também é humorístico (fundido "direita/esquerda")

O "balançar" no barco ,

E a coisa (fundida direita/esquerda) não é culpa minha, é do Firefox.

 
Se compilar ficheiros em ME que se encontrem na pasta Projectos, os ficheiros compilados são criados nas pastas correspondentes dos Peritos, Indicadores, Scripts. Mas se eu compilar com um compilador separado, isto não acontece - os ficheiros compilados são criados na pasta com a fonte. É suposto ser assim ou devem ser utilizadas as chaves apropriadas?
 

Nos caracteres BR-8.15 e BR-10.15 falhas, outros períodos BR estão bem.

construir 1150 vitória real de abertura7 x64 máx

Ficheiros de vídeo .mp4 em trailer.

+ no período M1 (por exemplo)

Se premir o botão "autoscroll chart to the end with the arrival of new ticks" - o gráfico é deslocado para o início

Depois, se premir a tecla "END", o gráfico desloca-se para o fim por um segundo e novamente - desloca-se para o início.

Arquivos anexados:
br-bag.zip  7609 kb
br-bag2.zip  3720 kb
 
Alexey Navoykov:

Não tinha prestado muita atenção antes, mas agora, ao trabalhar com grandes conjuntos de objectos de classe, notei um consumo de memória demasiado grande. Verifiquei-o por tamanhoof() e uma classe absolutamente vazia ocupa 16 bytes. E considerando que as classes aqui são geridas, adicionamos mais 8 bytes por ponteiro. O total é de 24 bytes. É um pouco excessivo.

Dei uma vista de olhos na documentação e vi o que lá encontrei:

A questão é porque é que as classes simples (as que não participam na herança) precisam da tabela de funções virtuais, uma vez que tudo é conhecido sobre estas classes na fase de compilação.

Acontece que os métodos neles são chamados da mesma forma que os métodos virtuais, ou seja, há um redireccionamento adicional do acesso através da tabela. E onde está a elogiada optimização do compilador? Como podemos afirmar depois disto alguma comparação de desempenho com C++?

A suposição realçada é incorrecta, apenas métodos virtuais são chamados através da tabela e a minha afirmação não é apenas verdadeira para o compilador MQL.
Além disso, MQL, algumas chamadas virtuais são realizadas como uma chamada de função normal, não através de uma tabela.
Como Renat escreveu, as aulas em MQL têm sempre uma tabela virtual, que leva 8 bytes + 8 bytes de metainformation.
[Excluído]  
Vladimir Pastushak:

Os programadores não são sem humor.

Parece-me um "download", e uma espécie de "download" de árvores balançam para a direita ou para a esquerda.

Obrigado, corrigido para "Descarregamento".
 
Ilyas:
A suposição realçada é incorrecta, apenas métodos virtuais são chamados através da tabela e a minha afirmação não é apenas verdadeira para o compilador MQL.
Além disso, MQL, algumas chamadas virtuais são feitas como chamadas de função normais, não através de tabela.
Como Renat escreveu, as aulas em MQL têm sempre uma tabela virtual que leva 8 bytes + 8 bytes de metainformation.
De qualquer modo, poderia esclarecer porque é que uma classe simples, que não herda de ninguém e, portanto, não participa na virtualização, precisa de uma mesa? Renat mencionou os destruidores virtuais, mas no nosso caso não há nada a virtualizar. Existe apenas um destruidor, pelo que também pode ser alinhado, não é verdade? Isto deixa apenas 8 bytes de metadados.
 
Alexey Navoykov:
Obrigado pela resposta, mas poderia explicar porque é que uma simples aula, que não é herdada de ninguém e, portanto, não participa na virtualização, precisa de uma mesa? Renat mencionou os destruidores virtuais, mas neste caso não há nada a virtualizar. Existe apenas um destruidor, pelo que também pode ser alinhado, não pode, deixando assim apenas 8 bytes de metadados.
Se uma classe não for herdada, o seu destruidor é chamado como uma função normal não virtual e é alinhado se cumprir os critérios em linha.

O sistema de tempo de execução (ambiente do programa MQL) é construído com o pressuposto de que uma classe ocupa pelo menos 16 bytes.
 
Se compilar ficheiros em ME, deitados na pasta Projectos, os ficheiros compilados são criados nas pastas apropriadas Especialistas, Indicadores, Scripts. Mas se eu compilar com um compilador separado, isto não acontece - os ficheiros compilados são criados na pasta com a fonte. É suposto ser assim ou devem ser utilizadas as chaves apropriadas?
 

construir 854 vin 10 64 x

Ao testar EAs com visualização ao tentar fechar qualquer outra janela previamente aberta que não a janela de trabalho actual com o teste, o teste é interrompido ...

Fechado através do botão do meio do rato e do menu de contexto ...