[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 1087

 
itum:

J'AI UN PROBLÈME ....

Lorsque je configure le courrier dans les paramètres du terminal, dans SMTP - j'utilise smtp.gmail.com:25

J'obtiens l'erreur - Mail : 530 5.7.0 Must issue a STARTTLS command first. l3sm2329679fan.0

Le serveur SMTP du serveur mail.com requiert une authentification RFS-2554. Qu'est-ce que c'est je ne sais pas - mais dans le bat j'ai eu à dupliquer le mot de passe et la boîte de connexion sur mail.ru, que konakt a roulé. Sans que cela ne fonctionne - il y a quelques années, cela fonctionnait, et puis ils ont changé quelque chose là-bas. Essayez smtp.rambler.ru avec le même port 25 - peut-être cela fonctionnera-t-il.
 

Mec, je suis confus par les termes. Ce que je voulais dire, c'est que si l'aide nous lie strictement à un endroit de la structure du programme, où une variable statique doit être déclarée et initialisée, et une seule fois, alors toutes les autres tentatives d'attribuer une autre valeur à cette variable, ou de lui attribuer une valeur tout court, devraient être traitées par le compilateur comme une erreur de syntaxe. En d'autres termes, d'après les définitions données dans l'aide, les variables statiques servent de conteneurs pour les constantes et ne peuvent pas être modifiées pendant l'exécution du programme. Arrêt complet. Mais hélas, nous venons de tomber sur 2 violations de cette règle. Il s'avère que vous pouvez déclarer une variable statique n'importe où et la réinitialiser à tout moment. Eh bien, ils auraient dû l'écrire dans l'aide.

Nous avons également découvert que cette variable est globale au niveau du programme principal même si elle est déclarée dans un sous-programme.

C'est la première fois que je suis confronté à la folie de déclarer une variable globale à l'intérieur d'un sous-programme - c'est déroutant pour comprendre le code du programme. Les variables déclarées dans les sous-routines ont une durée de vie égale ou inférieure à celle de la sous-routine. C'est un classique. On ne peut que se demander pourquoi les métacitations nécessitaient la perversité de déclarer une variable globale à l'intérieur des sous-programmes.

 
khorosh:

Le tutoriel contient également un exemple d'utilisation d'une variable statique, dont il ressort clairement qu'elle est initialisée une fois, sinon le compteur de ticks ne fonctionnerait pas.


L'auteur du tutoriel a enfreint la règle de l'aide - une variable statique est initialisée avant la fonction init(). La question est de savoir comment initialiser une variable qui n'a pas encore été déclarée. C'est vrai - vous ne pouvez pas. Par conséquent, la variable statique doit être déclarée avant le bloc init(). C'est un simple syllogisme catégorique. Si A, alors B. A, donc B est le modus asserting du syllogisme catégorique. S'il existe une interdiction d'initialiser une variable non initialisée (A), alors elle doit être déclarée en premier (B), l'interdiction existe (A), donc une déclaration préalable de la variable est nécessaire (B).

Il s'avère que l'auteur a non seulement initialisé une variable statique pas avant le bloc init(), mais l'a également déclarée au mauvais endroit du programme où l'aide est requise !

 

Merde, c'est là qu'il est enterré. Je l'ai trouvé ! https://docs.mql4.com/ru/basis/variables/initialization

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

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

Les auteurs de l'aide ne comprennent pas bien le terme "initialisation". Le premier paragraphe est correct - le terme "initialisation" est appliqué dans le sens d'une opération d'affectation - c'est-à-dire qu'initialiser une variable avec une valeur, c'est lui affecter une valeur. Dans le deuxième paragraphe, au lieu de "déclarer une variable" ("définir une variable"), l'auteur de l'aide a utilisé par erreur le terme d'initialisation. Par conséquent, le jugement "L'initialisation des variables globales et statiques est effectuée une fois." doit se lire "La déclaration des variables globales et statiques est effectuée une fois". Sinon, nous obtiendrons une absurdité. Si l'initialisation n'est possible qu'une seule fois, les valeurs de ces variables ne peuvent pas être modifiées lors de l'exécution. Les développeurs, s'il vous plaît, corrigez ces erreurs et les erreurs montrées dans plusieurs messages ci-dessus !

P.S.

J'ai confondu "initialisation de variable" avec "déclaration de variable". J'ai mis beaucoup de termes erronés dans les posts ci-dessus. :(

 
drknn:

Merde, c'est là qu'il est enterré. Je l'ai trouvé ! https://docs.mql4.com/ru/basis/variables/initialization

Les auteurs de l'aide ne comprennent pas bien le terme "initialisation". Le premier paragraphe est correct - le terme "initialisation" est appliqué dans le sens d'une opération d'affectation - c'est-à-dire qu'initialiser une variable avec une valeur, c'est lui affecter une valeur. Dans le deuxième paragraphe, au lieu de "déclarer une variable" ("définir une variable"), l'auteur de l'aide a utilisé par erreur le terme "initialisation". Par conséquent, le jugement "L'initialisation des variables globales et statiques est effectuée une fois." doit se lire "La déclaration des variables globales et statiques est effectuée une fois". Sinon, nous obtiendrons une absurdité. Si l'initialisation n'est possible qu'une seule fois, les valeurs de ces variables ne peuvent pas être modifiées lors de l'exécution. Les développeurs, s'il vous plaît, corrigez ces erreurs et les erreurs montrées dans plusieurs messages ci-dessus !

P.S.

J'ai confondu "initialisation de variable" avec "déclaration de variable". J'ai mis beaucoup de termes erronés dans les posts ci-dessus. :(

Le fait que l'initialisation ne soit effectuée qu'une seule fois ne signifie pas qu'une opération d'affectation, qui peut modifier la valeur d'une variable statique, ne peut pas être effectuée pendant l'exécution du programme. La différence entre ces opérations est que lors de l'initialisation, la déclaration du type de variable est combinée avec l'affectation de sa valeur initiale, de manière explicite ou implicite. Quant à la déclaration d'une variable statique avant init() ou à l'intérieur d'une fonction, elle affecte la possibilité d'appeler cette variable uniquement à partir de la fonction où elle est déclarée, ou à partir de toute autre fonction.
 

Joyeuses fêtes à tous. Aidez un mannequin! Veuillez me conseiller sur un EA décent. Compte Cents Depo pour maintenant 60$

 
khorosh:
L'initialisation étant une opération ponctuelle, il ne s'ensuit pas que l'affectation, qui peut modifier la valeur d'une variable statique, ne puisse pas être effectuée au milieu de l'exécution du programme. La différence entre ces opérations est que lors de l'initialisation, la déclaration d'un type de variable est combinée avec l'affectation de sa valeur initiale, de manière explicite ou implicite. Quant à la déclaration d'une variable statique avant init() ou à l'intérieur de toute fonction, elle affecte la possibilité d'appeler cette variable uniquement à partir de la fonction où elle est déclarée ou à partir de toute autre fonction.


Comprenez que si les concepts d'attribution et d'identification sont équivalents, leurs volumes sont les mêmes ! Cela signifie que les deux termes sont synonymes ! !!

Approfondissons la question jusqu'à sa source originelle. Ouvrons un dictionnaire anglais en ligne. Essayer de traduire le terme identification ne donne rien - il se traduit par identification. Ce mot n'est pas un mot autochtone, nous ne pouvons donc pas comprendre ce qu'il signifie à partir du dictionnaire en ligne. Vous allez sur Google et téléchargez le livre de Borovsky "English-Russian Dictionary of Programming". A la page 128, nous trouvons ce qui suit : http://s2.ipicture.ru/uploads/20101230/XwOJxmkn.jpg Il ne reste plus qu'à découvrir ce qu'est une identité. Ouvrez le dictionnaire d'Ozhegov. Trouvez l'entrée du dictionnaire :

Identité, -a et Identité. -a, cf. 1. La similitude totale, la coïncidence. D. vues. 2. (identité). En mathématiques : égalité, vraie pour toute valeur numérique des quantités qui la composent. II adjectif identique, -a, -a, et identique, -a, -a (au 1er sens). Expressions algébriques identiques.

C'est ce qu'il faut prouver ! Eh bien, puisqu'après une opération d'affectation, la valeur de la variable sera exactement la même que celle qui vient de lui être affectée, nous en concluons que l'identification d'une variable et l'identification d'une variable sont une seule et même opération, qui est exactement égale à l'opération d'affectation. Par conséquent, nous sommes forcés de conclure : Si une règle attribue une et une seule identification à une variable, et à un endroit strictement spécifié dans la structure du programme, alors nous n'avons pas le droit d'attribuer une autre valeur à cette variable (après son identification), car le concept d'identification et le concept d'affectation sont synonymes ! Arrêt complet.

 
drknn:


Il faut savoir que si les concepts d'attribution et d'identification sont équivalents, leurs champs d'application sont les mêmes ! Cela signifie que les 2 termes sont synonymes ! !!

Nous approfondissons la question jusqu'à sa source originelle. Ouvrez le dictionnaire anglais en ligne. Essayer de traduire le terme identification ne donne rien - il est traduit par identification. Ce mot n'est pas un mot autochtone, nous ne pouvons donc pas comprendre ce qu'il signifie à partir du dictionnaire en ligne. Vous allez sur Google et téléchargez le livre de Borovsky "English-Russian Dictionary of Programming". A la page 128, nous trouvons ce qui suit : http://s2.ipicture.ru/uploads/20101230/XwOJxmkn.jpg Il ne reste plus qu'à découvrir ce qu'est une identité. Ouvrez le dictionnaire d'Ozhegov. Trouvez l'entrée du dictionnaire :

Ce qu'il fallait prouver ! Eh bien, puisque après l'opération d'affectation, la valeur de la variable sera exactement la même que celle qui vient de lui être attribuée, nous en concluons que l'identification d'une variable et l'identification d'une variable sont une seule et même opération, qui est tout à fait équivalente à l'opération d'affectation. Par conséquent, nous concluons : Si une règle attribue une et une seule identification à une variable, et à un endroit strictement spécifié dans la structure du programme, alors nous ne pouvons pas attribuer une autre valeur à cette variable (après l'identification), car le concept d'identification et le concept d'affectation sont synonymes ! Arrêt complet.

Suggérez-vous que l'initialisation et l'identification sont la même chose ?
 
khorosh:
Suggérez-vous que l'initialisation et l'identification sont la même chose ?

Non, arrêtez - ne m'embrouillez pas. Attendez une minute.
 
drknn:

Non, arrêtez - ne m'embrouillez pas. Attendez une minute.
Au départ, vous parliez d'initialisation, mais pour une raison quelconque, vous êtes passé à l'identification.
Raison: