Erros, bugs, perguntas - página 240

 

Estou bem ciente da avaliação truncada da condição. Espero que isso responda a parte da pergunta. E as verificações necessárias serão feitas. Na segunda opção, se trocar s1.process e s2.process, o fluxo de trabalho está correcto. A questão não era sobre isto. Estava a perguntar sobre o resultado global. O resultado lógico global não depende da avaliação abreviada da condição. A questão era sobre o comportamento da variável local como uma variável estática para objectos de uma classe. Como sabemos, objectos de uma classe sobrescrevem uma variável estática.

Mina: "Em teoria, o código deve funcionar exactamente da mesma maneira. Mas... as variantes funcionam de forma diferente". deve ser entendido como "o valor de retorno deve ser idêntico, mas eles são diferentes".

Ais:

Parece ou uma recorrência oculta, com o habitual conjunto de efeitos secundários, ou ...


Sim, parece ser uma recorrência. Mas, os mesmos métodos de diferentes objectos são chamados de aninhados. O mesmo é excluído. Tendo feito a saída para o ficheiro, descobri que d1 deixa o valor definido para o nível d1 abaixo quando regressa ao nível acima.

 
Vigor:

Estou bem ciente da avaliação abreviada da condição. Espero que isto responda a parte da pergunta. Na segunda variante, se trocarmos o s1.process e o s2.process, ele funciona correctamente. A questão não era sobre isto. A questão era sobre o resultado global. O resultado lógico geral não depende da avaliação do estado abreviado. A questão era sobre o comportamento da variável local como uma variável estática para objectos de uma classe. Como sabemos, uma variável estática é sobre-escrita por objectos da mesma classe.

Sim, parece ser uma recorrência. Mas, os mesmos métodos de diferentes objectos são chamados de aninhados. Os mesmos métodos do mesmo objecto são chamados. Tendo feito output para ficheiro descobriu que d1 deixa valor definido para d1 nível abaixo ao regressar ao nível acima.

Mostrar um exemplo para ilustrar o problema. O que deu não mostra "corrupção variável local" de forma alguma. Um código de trabalho que podíamos executar por conta própria

 

Porque é que tem de fazer tudo para os criadores de produtos? Falta de confiança nas qualificações dos criadores de terceiros? Pareceu-me que, de acordo com as minhas explicações detalhadas, basta verificar mais uma vez o que acontece às variáveis locais dos métodos de uma classe quando estas estão aninhadas.

OK, se eu tiver algum tempo livre, escreverei um exemplo especial.

 
Vigor:

Porque é que tem de fazer tudo para os criadores de produtos? Falta de confiança nas qualificações dos criadores de terceiros? Pareceu-me que, de acordo com as minhas explicações detalhadas, basta verificar mais uma vez o que acontece às variáveis locais dos métodos da mesma classe quando estão aninhadas.

OK, se eu tiver algum tempo livre, escreverei um exemplo especial.

É reprodutível sob um depurador?
 
Vigor:

Porque é que tem de fazer tudo para os criadores de produtos? Falta de confiança nas qualificações dos criadores de terceiros? Pareceu-me que, de acordo com as minhas explicações detalhadas, basta verificar mais uma vez o que acontece às variáveis locais dos métodos da mesma classe quando estão aninhadas.

OK, se eu tiver algum tempo livre, escreverei um exemplo especial.

Não há forma de reproduzir o problema acima referido.
 

Como posso obter preços actuais para diferentes pares de moedas em múltiplas moedas? Ao testar, SymbolInfoTick() apenas devolve os preços do instrumento actual e gera erro 4302 ao tentar aceder a outros pares.

 
-Alexey-:

É correcto que pelo código do indicador,

ao adicioná-lo ou recompilá-lo ao gráfico, a unidade é impressa 2 vezes? A condição é satisfeita duas vezes neste caso? Por favor explique, preciso que seja executado uma vez.

Não seria mais fácil colocar a peça que é executada uma vez no bloco de inicialização?

Ou é necessário ter uma execução na calculadora do indicador?

 
stringo:
Não há forma de reproduzir o problema acima referido.
Exemplo com comentários
Arquivos anexados:
overtest.mq5  2 kb
 
mql5:
Está a jogar sob o depurador?
Mas sob o depurador está bem.
 
Interesting:

Não seria mais fácil colocar a peça que é executada uma vez no bloco de inicialização?

Ou precisa de ser executado uma vez na calculadora de indicadores?

Encontrei-o. Num gráfico, a janela minimizada da segunda cópia do indicador era - é por isso que estava a imprimir pela segunda vez. Lamento imenso - tudo funciona correctamente. Eu próprio ainda não reparei :) Apaguei as minhas mensagens anteriores.