[¡AVISO CERRADO!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen. No puedo ir a ningún sitio sin ti. - página 1087

 
itum:

TENGO UN PROBLEMA ....

Cuando configuro el correo en la configuración del terminal, en SMTP - uso smtp.gmail.com:25

Me aparece el error - Mail: 530 5.7.0 Must issue a STARTTLS command first. l3sm2329679fan.0

El servidor SMTP del servidor mail.com requiere autenticación RFS-2554. Qué es lo que no sé - pero en el bate que tenía que duplicar la contraseña y el cuadro de inicio de sesión en mail.ru, que konnekt rodó. Sin que dejara de funcionar - hace unos años funcionaba, y luego cambiaron algo allí. Pruebe con smtp.rambler.ru con el mismo puerto 25, quizás funcione.
 

Hombre, estoy confundido con los términos. Lo que quería decir es que si la ayuda nos ata estrictamente a un lugar en la estructura del programa, donde la variable estática debe ser declarada e inicializada, y sólo una vez, entonces todos los demás intentos de asignar cualquier otro valor a esta variable, o asignarle cualquier valor, deberían ser tratados por el compilador como un error de sintaxis. En otras palabras, basándose en las definiciones dadas en la ayuda, las variables estáticas sirven como contenedores de constantes y no pueden ser modificadas mientras el programa se está ejecutando. Punto y aparte. Pero, por desgracia, acabamos de encontrarnos con dos violaciones de esta norma. Resulta que puedes declarar una variable estática en cualquier lugar y reiniciarla en cualquier momento. Deberían haberlo escrito en la ayuda.

También hemos comprobado que esta variable es global a nivel del programa principal aunque se declare en un subprograma.

Es la primera vez que me encuentro con la locura de declarar una variable global dentro de una subrutina: es confuso entender el código del programa. Las variables declaradas dentro de las subrutinas tienen un tiempo de vida igual o inferior al de la subrutina. Es un clásico. Por qué las metacitas necesitaban la perversidad de declarar una variable global dentro de las subrutinas, uno sólo puede preguntarse.

 
khorosh:

También hay un ejemplo en el tutorial de uso de una variable estática, de la que se desprende que se inicializa una vez, de lo contrario el contador de ticks no funcionaría.


El autor del tutorial ha roto la regla de ayuda - una variable estática se inicializa antes de la función init(). La pregunta es ¿cómo podemos inicializar una variable que aún no ha sido declarada? Así es, no puedes. Por lo tanto, la variable estática debe declararse antes del bloque init(). Es un simple silogismo categórico. Si A, entonces B. A, por lo tanto B es el modus asertivo del silogismo categórico. Si existe una prohibición de inicializar una variable no inicializada (A), entonces debe declararse primero (B), la prohibición existe (A), por lo que es necesaria una declaración previa de la variable (B).

¡Resulta que el autor no sólo inicializó la variable estática no antes del bloque init(), sino que además la declaró en el lugar equivocado del programa donde se requiere la ayuda!

 

Mierda, ahí es donde está enterrado. ¡Lo encontré! https://docs.mql4.com/ru/basis/variables/initialization

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

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

Los autores de la ayuda se confunden con el término inicialización. El primer párrafo es correcto - el término "inicialización" se aplica en el sentido de una operación de asignación - es decir, inicializar una variable con un valor es asignarle un valor. En el segundo párrafo, en lugar de "declarar una variable" ("definir una variable"), el autor de la ayuda utilizó erróneamente el término inicialización. Por lo tanto, la sentencia "La inicialización de las variables globales y estáticas se realiza una vez" debe leerse como "La declaración de las variables globales y estáticas se realiza una vez". De lo contrario, obtendremos un absurdo. Si la inicialización sólo es posible una vez, los valores de estas variables no pueden modificarse en tiempo de ejecución. Desarrolladores, por favor, arreglen estos y los errores mostrados en varios mensajes anteriores.

P.D.

He confundido "inicialización de variables" con "declaración de variables". He puesto muchos términos erróneos en los posts anteriores. :(

 
drknn:

Mierda, ahí es donde está enterrado. ¡Lo encontré! https://docs.mql4.com/ru/basis/variables/initialization

Los autores de la ayuda se confunden con el término inicialización. El primer párrafo es correcto - el término "inicialización" se aplica en el sentido de una operación de asignación - es decir, inicializar una variable con un valor es asignarle un valor. En el segundo párrafo, en lugar de "declarar una variable" ("definir una variable"), el autor de la ayuda utilizó erróneamente el término inicialización. Por lo tanto, la sentencia "La inicialización de las variables globales y estáticas se realiza una vez" debe leerse como "La declaración de las variables globales y estáticas se realiza una vez". De lo contrario, obtendremos un absurdo. Si la inicialización sólo es posible una vez, los valores de estas variables no pueden modificarse en tiempo de ejecución. Desarrolladores, por favor, arreglen estos y los errores mostrados en varios mensajes anteriores.

P.D.

He confundido "inicialización de variables" con "declaración de variables". He puesto muchos términos erróneos en los posts anteriores. :(

El hecho de que la inicialización sea una operación única no significa que una operación de asignación, que puede cambiar el valor de una variable estática, no pueda realizarse durante la ejecución del programa. La diferencia entre estas operaciones es que en la inicialización, la declaración del tipo de la variable se combina con la asignación de su valor original de forma explícita o implícita. En cuanto a la declaración de una variable estática antes de init() o dentro de cualquier función, esto afecta a la capacidad de llamar a esta variable sólo desde la función donde se declara, o desde cualquier otra función.
 

Felices fiestas a todos. ¡Ayuda a un tonto! Por favor, aconsejar sobre un EA decente. Cuenta de céntimos Depo por ahora 60$

 
khorosh:
Dado que la inicialización es una operación única, no se deduce que la asignación, que puede modificar el valor de una variable estática, no pueda realizarse durante la ejecución del programa. La diferencia entre estas operaciones es que durante la inicialización, la declaración de un tipo de variable se combina con la asignación de su valor inicial de forma explícita o implícita. En cuanto a la declaración de una variable estática antes de init() o dentro de cualquier función, esto afecta a la posibilidad de llamar a esta variable sólo desde la función donde se declara o desde cualquier otra función.


Entienda que aunque los conceptos de atribución e identificación son equivalentes, ¡sus volúmenes son los mismos! ¡¡¡Esto significa que ambos términos son sinónimos!!!

Profundicemos en la pregunta hasta su fuente original. Abrimos un diccionario online de inglés. Intentar traducir el término identificación no da nada: se traduce como identificación. La palabra no es nativa, por lo que no podemos entender lo que significa desde el diccionario online. Vayamos a Google y descarguemos el libro de Borovsky "Diccionario inglés-ruso de programación". En la página 128 encontramos lo siguiente: http://s2.ipicture.ru/uploads/20101230/XwOJxmkn.jpg Sólo queda averiguar qué es una identidad. Abrir el diccionario de Ozhegov. Encuentra la entrada del diccionario:

Identidad, -a e Identidad. -a, cf. 1. La similitud completa, la coincidencia. D. opiniones. 2. (identidad). En matemáticas: igualdad, verdadera para cualquier valor numérico de sus cantidades constitutivas. II adjetivo idéntico, -a, -a, e idéntico, -a, -a (a la 1ª acepción). Expresiones algebraicas idénticas.

¡Eso es lo que hay que demostrar! Pues bien, como después de una operación de asignación, el valor de la variable será exactamente el mismo que se le acaba de asignar, concluimos que la identificación de una variable y la identificación de una variable son una misma operación, que es exactamente igual a la operación de asignación. Por lo tanto, nos vemos obligados a concluir: Si una regla asigna una y sólo una identificación a una variable, y en un lugar estrictamente especificado en la estructura del programa, entonces no tenemos derecho a asignar otro valor a esa variable (después de su identificación), ¡porque el concepto de identificación y el concepto de asignación son sinónimos! Punto y aparte.

 
drknn:


Sólo hay que darse cuenta de que, si bien los conceptos de atribución e identificación son equivalentes, sus alcances son los mismos. ¡¡¡Esto significa que los 2 términos son sinónimos!!!

Nos adentramos en la cuestión hasta su fuente original. Abre el diccionario de inglés en línea. Al intentar traducir el término identificación no se obtiene nada: se traduce como identificación. La palabra no es nativa, por lo que no podemos entender lo que significa desde el diccionario online. Vas a Google y descargas el libro de Borovsky "Diccionario inglés-ruso de programación". En la página 128 encontramos lo siguiente: http://s2.ipicture.ru/uploads/20101230/XwOJxmkn.jpg Sólo queda averiguar qué es una identidad. Abrir el diccionario de Ozhegov. Encuentra la entrada del diccionario:

¡Lo que había que demostrar! Pues bien, como después de la operación de asignación, el valor de la variable será exactamente el mismo que el valor que se le acaba de asignar, concluimos que la identificación de una variable y la identificación de una variable son una misma operación, que es exactamente la misma que la operación de asignación. Por lo tanto, concluimos: Si una regla asigna una y sólo una identificación a una variable, y en un lugar estrictamente especificado en la estructura del programa, entonces no podemos asignar otro valor a esa variable (después de la identificación), ¡porque el concepto de identificación y el concepto de asignación son sinónimos! Punto y aparte.

¿Está sugiriendo que la inicialización y la identificación son lo mismo?
 
khorosh:
¿Está sugiriendo que la inicialización y la identificación son lo mismo?

No, para, no me confundas. Espera un momento.
 
drknn:

No, para, no me confundas. Espera un momento.
Inicialmente hablabas de la inicialización, pero por alguna razón cambiaste a la identificación.
Razón de la queja: