confusão sobre o comportamento das variáveis - página 2

 
wlad:

errado - não há inicialização

Aqui está uma prova da ajuda

As variáveis globais são inicializadas somente uma vez logo após o programa ser carregado na memória do terminal do cliente.

não se trata de inicialização, mas de mudar uma variável

por favor, leia o código cuidadosamente

Imprima também o motivo da desinicialização no init() no log. Então você entenderá porque a inicialização acontece.
 
valenok2003:

Você sempre tem a condição StringVal != backup e a primeira vez será sempre verdadeira, porque ela (init) é iniciada apenas uma vez cada vez que a EA é iniciada, e um novo início ocorre quando você muda a janela tf, quando você muda o conjunto quando você inicia o terminal.

Não é isso que você quer dizer.

porque você não leu as mensagens com atenção.

O problema ocorre quando a corda externa Valor

a segunda variável também muda quando a primeira muda

o tempo todo

deve ser mudado apenas uma vez

 
artmedia70:
E escreva o motivo da desinicialização no init() no log. Então você entenderá porque a inicialização acontece.

do que você está falando?

esquecer a inicialização

Pegue o último exemplo sem init() e teste

Por que você está falando bobagens se não entende o que quero dizer?

 
wlad:

do que você está falando?

esquecer a inicialização

tome o último exemplo sem o init() e teste-o

Por que você está falando bobagens se você não entende do que estamos falando?



Ou você quebra mais o pescoço ou lê por que as variáveis são inicializadas quando os parâmetros de entrada são alterados.

"... As variáveis globais são inicializadas apenas uma vez após o programa ser carregado na memória do terminal do cliente... "

O que você destacou em vermelho e a espessura da fonte - isso não lhe dá a garantia de que depois de alterar o valor de uma variável externa, ela não se inicializará novamente como na primeira inicialização. Você pode até mesmo mudar o tamanho da fonte nas mensagens. Mas a inicialização ainda acontecerá, mesmo se você remover o init() do programa.

 
wlad:

não é isso que você quer dizer

porque você não leu o post cuidadosamente.

O problema ocorre quando o valor da corda externa é alterado

e a segunda variável também muda quando a primeira é alterada

o tempo todo

e só deve ser trocado uma vez




uma vez que cada vez que você inicia a EA, e ela começa toda vez que você muda esta variável e pressiona OK

o que você quer dizer com "carregar um programa na memória do terminal do cliente..."... quando você compilou o código?

 
artmedia70:

Ou você quebra mais suas lanças ou lê porque as variáveis são inicializadas quando os parâmetros de entrada são alterados.

"... As variáveis globais são inicializadas uma vez, imediatamente após o programa ser carregado na memória do terminal do cliente... "

O que você destacou em vermelho e a espessura da fonte - isso não lhe dá a garantia de que depois de alterar o valor de uma variável externa ela não se inicializará novamente como na primeira inicialização.

por que responder se você não lê suas mensagens com atenção?

2. a variável não é inicializada, ela toma o valor de 1.

Se você é preguiçoso demais para testá-lo, não perca seu tempo.

Se você quiser ajudar, eu ficaria grato!

Leia atentamente seus posts e teste-o.


De onde você tirou isso?

não garante que depois que você mudar o valor de uma variável externa, ela não será reinicializada como na primeira execução.

Eu ainda não vi nenhuma reinicialização das variáveis globais

 
wlad:

Por que responder se você não lê as mensagens com atenção?

2. a variável não é inicializada, mas toma valor 1.

Se você é preguiçoso demais para testá-lo, não perca seu tempo.

Se você quiser ajudar, eu ficaria grato!

Leia atentamente seus posts e teste-o.


De onde você tirou isso?

não garante que depois que você mudar o valor de uma variável externa, ela não será reinicializada como na primeira execução.

Eu ainda não vi nenhuma reinicialização das variáveis globais


Quando uma variável externa é alterada, a EA é reiniciada. Sugeri que você exibisse as razões para a desinicialização no diário de bordo. Você optou por não fazer isso.
 
valenok2003:

o que você quer dizer com "carregar o programa na memória do terminal do cliente..." ?"... é quando você compilou o código?

também neste caso

você quer dizer quando o programa é anexado ao gráfico pela primeira vez

mas vou dizer novamente.

não se trata de inicialização

leia acima.

 
artmedia70:
Quando você muda uma variável externa, a EA é reiniciada. Eu sugeri que você exibisse as razões para a desinicialização no diário de bordo. Você optou por não fazer isso.

por quê?

o que isso fará por mim?

Eu sei porque a desinicialização acontece

Eu mudo a variável externa

 
wlad:

neste caso, também.

é a primeira vez que o programa é anexado ao gráfico

mas vou dizer novamente.

Não se trata de iniciação.

leia acima



Vlad, há aqui um erro, a inicialização acontece toda vez que você muda parâmetros externos. E essa é exatamente a questão, se for sobre o inite.