[AVISO FECHADO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Não posso ir a lugar algum sem você. - página 1087

 
itum:

TENHO UM PROBLEMA ....

Quando configuro o correio nas configurações do terminal, em SMTP - uso smtp.gmail.com:25

Eu recebo o erro - Correio: 530 5.7.0 Deve emitir um comando STARTTLS primeiro. l3sm2329679fan.0

O servidor SMTP no servidor mail.com requer autenticação RFS-2554. O que eu não sei - mas no taco eu tive que duplicar a senha e a caixa de login no mail.ru, aquele konakt rolou. Sem ele parou de funcionar - há alguns anos atrás funcionou, e então eles mudaram algo lá. Experimente smtp.rambler.ru com o mesmo 25º porto - talvez funcione.
 

Cara, estou confuso com os termos. O que eu queria dizer é que se a ajuda nos vincula estritamente a um lugar na estrutura do programa, onde a variável estática deve ser declarada e inicializada, e apenas uma vez, então todas as outras tentativas de atribuir qualquer outro valor a esta variável, ou atribuir qualquer valor a ela, devem ser tratadas pelo compilador como um erro de sintaxe. Em outras palavras, com base nas definições dadas na ajuda, as variáveis estáticas servem como recipientes para constantes e não podem ser alteradas enquanto o programa estiver em execução. Parada completa. Mas, infelizmente, acabamos de nos deparar com duas violações desta regra. Acontece que você pode declarar uma variável estática em qualquer lugar e reinicializá-la a qualquer momento. Bem, eles deveriam tê-lo escrito na ajuda.

Descobrimos também que esta variável é global no nível do programa principal, mesmo que seja declarada em um subprograma.

Esta é a primeira vez que encontro a loucura de declarar uma variável global dentro de uma sub-rotina - é confuso entender o código do programa. As variáveis que são declaradas dentro das sub-rotinas têm uma vida útil igual ou menor que a de uma sub-rotina. É um clássico. Por que as metaquotas precisavam da perversidade de declarar uma variável global dentro das sub-rotinas, só podemos nos perguntar.

 
khorosh:

Há também um exemplo no tutorial de utilização de uma variável estática, da qual fica claro que ela é inicializada uma vez, caso contrário, o contador de carrapatos não funcionaria.


O autor do tutorial quebrou a regra de ajuda - uma variável estática é inicializada antes da função init(). A questão é como podemos inicializar uma variável, que ainda não foi declarada? Isso mesmo - você não pode. Por conseguinte, a variável estática deve ser declarada antes do bloco init(). Trata-se de um simples silogismo categórico. Se A, então B. A, portanto B é o modus operandi de afirmação do silogismo categórico. Se existe uma proibição de inicializar uma variável não inicializada (A), então ela deve ser declarada primeiro (B), a proibição existe (A), portanto é necessária uma declaração prévia da variável (B).

Acontece que o autor não apenas iniciou a variável estática não antes do bloco init(), mas também a declarou no lugar errado do programa onde a ajuda é necessária!

 

Merda, é lá que está enterrado. Encontrei-a! https://docs.mql4.com/ru/basis/variables/initialization

Любая переменная при определении может быть инициализирована. Любая переменная инициализируется нулем (0), если явно не задано другое начальное значение. Глобальные и статические переменные могут быть проинициализированы только константой соответствующего типа. Локальные переменные могут быть проинициализированы любым выражением, а не только константой.

Инициализация глобальных и статических переменных производится однократно. Инициализация локальных переменных производится каждый раз при вызове соответствующих функций.

Os autores da ajuda estão confusos sobre o termo inicialização. O primeiro parágrafo é correto - o termo "inicialização" é aplicado no sentido de uma operação de atribuição - ou seja, inicializar uma variável com um valor é atribuir-lhe um valor. No segundo parágrafo, ao invés de "declarar uma variável" ("definir uma variável"), o autor da ajuda usou erroneamente o termo inicialização. Portanto, o julgamento "A inicialização de variáveis globais e estáticas é feita uma vez" deve ser lido como "A declaração de variáveis globais e estáticas é feita uma vez". Caso contrário, teremos um absurdo. Se a inicialização é possível apenas uma vez, os valores destas variáveis não podem ser alterados em tempo de execução. Desenvolvedores, por favor, corrijam estes e os erros mostrados em vários posts acima!

P.S.

Eu confundi "inicialização variável" com "declaração variável". Coloquei muitos termos errados nos postos acima. :(

 
drknn:

Merda, é lá que está enterrado. Encontrei-a! https://docs.mql4.com/ru/basis/variables/initialization

Os autores da ajuda estão confusos sobre o termo inicialização. O primeiro parágrafo é correto - o termo "inicialização" é aplicado no sentido de uma operação de atribuição - ou seja, inicializar uma variável com um valor é atribuir um valor a ela. No segundo parágrafo, ao invés de "declarar uma variável" ("definir uma variável"), o autor da ajuda usou erroneamente o termo inicialização. Portanto, o julgamento "A inicialização de variáveis globais e estáticas é feita uma vez" deve ser lido como "A declaração de variáveis globais e estáticas é feita uma vez". Caso contrário, teremos um absurdo. Se a inicialização é possível apenas uma vez, os valores destas variáveis não podem ser alterados em tempo de execução. Desenvolvedores, por favor, corrijam estes e os erros mostrados em vários posts acima!

P.S.

Eu confundi "inicialização variável" com "declaração variável". Eu misturei alguns termos errados nos posts acima. :(

O fato de a inicialização ser realizada apenas uma vez não significa que uma operação de atribuição, que pode alterar o valor de uma variável estática, não possa ser realizada durante a execução do programa. A diferença entre estas operações é que durante a inicialização, a declaração do tipo de variável é combinada com a atribuição de seu valor inicial, seja explícita ou implicitamente. Quanto à declaração de uma variável estática antes do init() ou dentro de qualquer função, isto afeta a capacidade de chamar esta variável somente da função onde ela é declarada, ou de qualquer outra função.
 

Boas festas a todos. Ajude um boneco! Por favor, aconselhe sobre um EA decente. Centavos de conta Depo por agora 60$

 
khorosh:
Como a inicialização é uma operação única, ela não segue essa atribuição, que pode modificar o valor de uma variável estática, não pode ser realizada no meio da execução do programa. A diferença entre estas operações é que na inicialização, a declaração de um tipo variável é combinada com uma atribuição explícita ou implícita de seu valor original. Quanto à declaração de uma variável estática antes do init() ou dentro de qualquer função, isto afeta a possibilidade de chamar esta variável somente da função onde ela é declarada ou de qualquer outra função.


Entenda que, embora os conceitos de atribuição e identificação sejam equivalentes, seus volumes são os mesmos! Isso significa que os dois termos são sinônimos!!!

Vamos mais fundo na questão até sua fonte original. Vamos abrir um dicionário online de inglês. Tentar traduzir o termo identificação não produz nada - traduz-se como identificação. A palavra não é nativa, por isso não podemos entender o que significa no dicionário on-line. Você vai ao Google e baixa o livro de Borovsky "Dicionário de Programação Inglês-Russo". Na página 128 encontramos o seguinte: http://s2.ipicture.ru/uploads/20101230/XwOJxmkn.jpg Tudo o que nos resta é descobrir o que é uma identidade. Abra o Dicionário de Ozhegov. Encontre a entrada do dicionário:

Identidade, -a e Identidade. -a, cf. 1. A completa semelhança, coincidência. D. pontos de vista. 2. (identidade). Em matemática: igualdade, verdadeiro para quaisquer valores numéricos de suas quantidades constituintes. II adjetivo idêntico, -a, -a, e idêntico, -a, -a (para o 1º sentido). Expressões algébricas idênticas.

Isso é o que é preciso para provar! Bem, como após uma operação de atribuição, o valor da variável será exatamente o mesmo que o que acaba de ser atribuído a ela, concluímos que a identificação de uma variável e a identificação de uma variável são uma e a mesma operação, que é exatamente igual à operação de atribuição. Portanto, somos obrigados a concluir: se uma regra atribui uma e apenas uma identificação a uma variável, e em um lugar estritamente especificado na estrutura do programa, então não temos o direito de atribuir outro valor a essa variável (após sua identificação), porque o conceito de identificação e o conceito de atribuição são sinônimos! Parada completa.

 
drknn:


Basta perceber que, embora os conceitos de atribuição e identificação sejam equivalentes, seus escopos são os mesmos! Isso significa que os 2 termos são sinônimos!!!

Vamos ao fundo da questão até sua fonte original. Abra o dicionário de inglês online. Tentar traduzir o termo identificação não produz nada - ele é traduzido como identificação. A palavra não é nativa, portanto não podemos entender o que significa no dicionário on-line. Você vai ao Google e baixa o livro de Borovsky "Dicionário de Programação Inglês-Russo". Na página 128 encontramos o seguinte: http://s2.ipicture.ru/uploads/20101230/XwOJxmkn.jpg Tudo o que nos resta é descobrir o que é uma identidade. Abra o Dicionário de Ozhegov. Encontre a entrada do dicionário:

O que era necessário para provar! Bem, como após a operação de atribuição, o valor da variável será exatamente o mesmo que o valor que acabou de ser atribuído a ela, concluímos que a identificação de uma variável e a identificação de uma variável são uma e a mesma operação, que é exatamente a mesma que a operação de atribuição. Portanto, concluímos: Se uma regra atribui uma e apenas uma identificação a uma variável, e em um lugar estritamente especificado na estrutura do programa, então não podemos atribuir outro valor a essa variável (após a identificação), porque o conceito de identificação e o conceito de atribuição são sinônimos! Parada completa.

Você está sugerindo que a inicialização e a identificação são a mesma coisa?
 
khorosh:
Você está sugerindo que a inicialização e a identificação são a mesma coisa?

Não, pare - não me confunda. Espere um minuto.
 
drknn:

Não, pare - não me confunda. Espere um minuto.
Inicialmente você estava falando de inicialização, mas por alguma razão você mudou para identificação.