Contagem de uma Função

 

Bom! Estou tentando desenvolver uma função que conte a quantidade de barras após uma posição aberta. Eu tente com esse código:

int i=0;
if(novabarra()==true){
i=i+1;
}
Print(i);

Seguindo essa logica eu pensei o seguinte: a cada vez que a função novabarra for igual a true, ou seja, eu tenho uma novabarra sendo aberta, ele vai somar i+1, porém, ao rodar o EA, i não sai de zero kkkk...


Tentei tambem dessa forma:

if(novabarra()==true){
int i=0;
i=i+1;
Print(i);
}

Dessa forma retorna sempre 1, pois a cada nova barra, a variavel i é criada e somada a um.

 
posta o bloco novabarra() para ver o que esta escrito nela
 

ahh sim, uma observação

vc esta declarando o i dentro, então ele sempre começará do zero

coloque o seu int i=0; como variavel global(acima do OnInit) e vai funcionar

 
Eduardo Oliveira:

ahh sim, uma observação

vc esta declarando o i dentro, então ele sempre começará do zero

coloque o seu int i=0; como variavel global(acima do OnInit) e vai funcionar

Puts! Nem me liguei nisso... Eu tava declarando i=0 a cada tick, i nunca ia ser maior que zero. 😅 Valeu.
 

Complementando a resposta acima, se vc quiser que a variável "i" continue sendo local , em vez de global, basta inserir o qualificador "static" antes da declaração.

Assim:

static int i = 0;

O qualificador "static" faz com que a variável seja alocada no segmento de dados (em vez de ser alocada na pilha do sistema, como no caso das variáveis locais não-estáticas).

Isso garante que o conteúdo da variável seja preservado entre diferentes chamadas consecutivas à função onde ela foi declarada.

A vantagem de usar o "static" é que ela continua sendo uma variável local da função onde foi declarada, de modo que vc pode utilizar o mesmo nome "i" para outras variáveis em outras funções, sem nenhuma interferência mútua.

Razão: