[ARQUIVO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 4. - página 206

 
Aleksander:

querida... não há necessidade de escrever aqui em letras tão grandes... você pode quebrar seus olhos :-)

e isto... antes de fazer perguntas... você já tentou ler a Ajuda no Metaeditor? Tudo isso?...para começar...para não fazer perguntas estúpidas sobre tipos e coisas assim....

===

Tipo de operação para a função OrderSend(). Pode ser qualquer um dos seguintes valores:

Constante Valor Descrição
OP_BUY 0 Compre
OP_SELL 1 Venda
OP_BUYLIMIT 2 COMPRA LIMITAR ordem pendente
OP_SELLLIMIT 3 Pedido de LIMITE DE VENDA Pendente
OP_BUYSTOP 4 Ordem STOP Pendente de compra
OP_SELLSTOP 5 Pendente da ordem de parada da venda
Caro Senhor... não há necessidade de ficar convencido aqui... Se algo lhe parece bobo, não se preocupe em responder... Se Deus quiser, há pessoas sem ilusões de grandeza... Esta é uma seção para iniciantes e se as pessoas perguntarem sobre algo, significa que não entendem... Além disso: se tudo estivesse claro na Ajuda e no livro, eu não estaria aqui.
Agora vamos ao ponto: digamos que temos 3 ordens e todas são ordens de mercado. Então, com 3 iterações não atingiremos o bloco 4 em nenhuma delas. E após a última iteração iremos imediatamente para o bloco 5, contornando o bloco 4. O bloco 5 contém a variável Tip, que é declarada no bloco 4. Mas o bloco 4 não foi executado. Portanto, a variável Tip não é declarada. Então usamos a variável antes de declará-la?

 
Por quê? O compilador alocou espaço de memória para a variável na primeira passagem... e o acesso não causará um erro...
 
Aleksander:
Por quê? O compilador alocou espaço de memória para a variável durante a primeira passagem... e o acesso não causará um erro...


O seguinte ponto não está claro: na primeira passagem (assumindo que todas as 3 ordens são ordens de mercado), não chegamos ao bloco 4, já que a condição se(OrderType()<2) for atendida no bloco 3. Então o próximo iterador continua completando a iteração atual e pula o bloco 4, que é onde a variável Tip é declarada. Isso significa que a variável Tip não foi declarada durante a primeira iteração (ou seja, a linha que declara a variável Tip não foi executada)... E assim continua para todas as 3 iterações. Ou seja, após a 3ª iteração chegamos ao bloco 5, que usa a variável Tip, ou seja, não foi declarada antes (ou seja, temos uma string com sua declaração, mas como nunca inserimos o bloco 4, isso significa que não declaramos essa variável...)

 

Eu estava me referindo à travessia do texto do programa pelo compilador - tendo encontrado uma definição de variável em qualquer ponto de uma função - o metacompilador declarou esta variável para uso abaixo do texto - apesar do fato de não haver nenhuma referência real à inicialização da variável... - que é o ambiente :-)

int start()  {
       int l=1;
       
       if (l == 2) {
          int kk=99;
          kk = 100;
       }
   }
   if (kk != 10) { Print("net kk takoi peremennoi = ", kk); }


Embora não houvesse entrada na condição - o compilador alocou um local de memória para a variável... embora não o tenha inicializado... em Imprimir será = 0

 
Aleksander:

Eu estava me referindo à travessia do texto do programa pelo compilador - tendo encontrado uma definição de variável em qualquer ponto de uma função - o metacompilador declarou essa variável para uso a jusante - apesar de não haver nenhuma referência real à inicialização da variável... - que é o ambiente :-)


Embora não houvesse entrada na condição - o compilador alocou um local de memória para a variável... embora não o tenha inicializado... em Imprimir será = 0



Então, se entendi corretamente: compilador, ao contrário do terminal (grosso modo) não executa loops, mas apenas lê linhas em fila e verifica se há erros... Isto é, o principal para ela (que é o critério de presença/ausência de erro) é que a linha (posição), onde uma variável foi utilizada, deve vir APÓS a linha (posição), onde esta variável foi declarada?
 
você poderia dizer :-) se você fizer uma declaração abaixo - e acessar a variável acima - o compilador irá gerar um erro...
 
Aleksander:
você poderia dizer :-) se você fizer uma declaração abaixo - e acessar a variável acima - o compilador irá gerar um erro...

Entendi, muito obrigado... Alguma dica sobre as variáveis GV?
 

o que tem a ver com eles? - global em nível de terminal?

armazenam algum tempo em um arquivo variável :-) a data de acesso, nome e valor do tipo duplo
 
PS - e também - indiretamente :-) - você pode armazenar até 63 letras em um nome variável - seja russo ou inglês...
 
Um conselho, por favor: ao criar a função ObjectCreate (ao criar uma linha de tendência), recebo um raio, que, seguindo de um ponto a outro, tem uma continuação no gráfico apenas para o lado direito.