Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 1416

 
ANDREY:

Merci pour cette précision.

Au fait, j'ai enlevé les plus jaunes et le compilateur a donné une erreur. Ils jouent donc un certain rôle dans toute cette construction. Mais quoi.... je ne comprends toujours pas. Pourquoi sont-ils nécessaires lorsque l'addition de chaînes de caractères s'effectue uniquement par l'utilisation des plus bleus. A en juger par vos explications, il n'y a rien d'autre dans cette construction ..... si je ne me trompe pas.

Et à propos de la chaîne (i)... À propos de la conversion de type .... est plus ou moins claire pour moi. Ce qui n'est pas clair, c'est que..... string est le nom d'un type de variable. i est une variable de comptage indiquant l'indice d'un élément de tableau. Et pourquoii est entre parenthèses () ? J'ai pensé jusqu'à présent que les parenthèses étaient une caractéristique de la fonction. Par exemple, Print( ). Mais que signifient les parenthèses ou quelle est leur fonction par rapport à i et à toute cette construction - string(i) ? À première vue, il semble qu'avant la variable i avait un type int (entier), puis vous avez changé le type de la variable i de int à string (chaîne) . Mais les parenthèses rondes qui me contiennent ne me permettent pas de le penser.

Merci pour l'explication.

Ce n'est pas une conversion de type, mais une conversion d'une valeur dans la variable i

Vous pouvez souvent le voir de cette façon

eStr+=(string)i+": "+DoubleToString(eArray[i],4)+", ";
 
Alekseu Fedotov:

Il ne s'agit pas d'une conversion de type, mais d'une transformation de la valeur trouvée dans la variable i

peut plus souvent être considéré comme


Merci pour le conseil. Conversion de la valeur de la variable i. Que voulez-vous dire dans mon code ?
1. La valeur
de i était 0, après(string)i+ elle est devenue 1, puis 2 et ainsi de suite jusqu'à 30. Pourquoi ai-je besoin de (string) au lieu de simplementi++ ?
2. Le type de la variable i était int, et après (string)i+ il est devenu string ? Il ne s'agit pas d'une conversion de valeur, mais d'une conversion du type de variable.


Et aussi .... Vous pouvez peut-être m'expliquer à quoi correspondent les "plus" jaunes. Ou à quoi servent-ils ?

 eStr+=string(i)+": "+DoubleToString(eArray[i],4)+", ";

Merci pour l'explication.

 
ANDREY:

Merci pour le conseil. Convertir la valeur de la variable i. Que signifie mon code ?
1. La valeur
de i était 0, après(string)i+ elle est devenue 1, puis 2 et ainsi de suite jusqu'à 30. Pourquoi ai-je besoin de (string) au lieu de simplementi++ ?
2. Le type de la variable i était int, et après (string)i+ il est devenu string ? Il ne s'agit pas d'une conversion de valeur, mais d'une transformation du type de variable.


Et aussi .... Vous pouvez peut-être m'expliquer à quoi correspondent les "plus" jaunes. Ou à quoi servent-ils ?

Merci pour l'explication.

La conversion de type ou la conversion de type explicite sont égales. La documentation utilise les deux expressions. Vous avez bien noté l'avertissement d'Alexey, c'est la conversion de type qui...

Suite : Nous avons plusieurs cordes

  1. i de type int qui a été explicitement converti en type string (soit 0)
  2. " : "
  3. eArray[i] casté en type de chaîne de caractères via la fonction DoubleToString (que ce soit 1.6251)
  4. ", "

La valeur de i est incrémentée dans la boucle à chaque itération et se retrouve dans cette chaîne à partir de là...

Notez que les plus sont mis entre ces chaînes de caractères. Ces plus additionnent ces lignes en une seule. Le résultat est la chaîne "0 : 1.6251", puis cette chaîne est ajoutée à la chaîne de la variable eStr par l'opérateur +=.


 
ANDREY:

Merci pour le conseil. Convertir la valeur de la variable i. Que signifie mon code ?
1. La valeur
de i était 0, après(string)i+ elle est devenue 1, puis 2 et ainsi de suite jusqu'à 30. Pourquoi ai-je besoin de (string) au lieu de simplementi++ ?
2. Le type de la variable i était int, et après (string)i+ il est devenu string ? Il ne s'agit pas d'une conversion de valeur, mais d'une transformation du type de variable.


Et aussi .... Vous pouvez peut-être m'expliquer à quoi correspondent les "plus" jaunes. Ou à quoi servent-ils ?

Merci pour l'explication.

Avec les plus jaunes, vous formez une chaîne (texte) que vous éditez avecPrint();

Vous pouvez faire de même avec StringConcatenate()

eStr+=StringConcatenate((string)i,": ",DoubleToString(eArray[i],4),", ");
 
Alekseu Fedotov:

Vous utilisez le signe plus jaune pour former une chaîne de caractères (texte), que vous affichez avecPrint();

Vous pouvez faire de même avec StringConcatenate()

Je ne conseille pas d'utiliser cette fonction car elle fonctionne très différemment dans MQL5 et dans MQL4. Par conséquent, il peut être difficile de le comprendre lorsque vous passez à MQL5.


Mais peut-être que je me trompe...

mql4

string  StringConcatenate( 
   void argument1,         // первый параметр любого простого типа  
   void argument2,         // второй параметр любого простого типа 
   ...                     // следующий параметр любого простого типа 
   );

mql5

int  StringConcatenate( 
   string&  string_var,   // строка для формирования 
   void argument1         // первый параметр любого простого типа  
   void argument2         // второй параметр любого простого типа 
   ...                    // следующий параметр любого простого типа 
   );

Comme vous pouvez le voir, dans mql5, c'est très similaire à une simple addition de chaînes de caractères.

 eStr+=string(i)+": "+DoubleToString(eArray[i],4)+", ";
 StringConcatenate(eStr, i, ": ", eArray[i], ", ");
Et la conversion de type s'effectue dans cette fonction sans aucun souci supplémentaire.
 
Alexey Viktorov:

Je ne recommande pas d'utiliser cette fonction car elle fonctionne différemment dans MQL5 et dans MQL4. Par conséquent, il peut être difficile à comprendre lorsque vous passez à MQL5

Merci pour ces informations précieuses

 
Alekseu Fedotov:

Vous utilisez le signe plus jaune pour former une chaîne de caractères (texte), que vous affichez avecPrint();

Vous pouvez faire de même avec StringConcatenate()

Merci pour cette nouvelle information pour moi

 
ANDREY:

Merci pour ces informations précieuses

J'ai ajouté à mon message écrit à la hâte.

Il est déjà clair pour tout le monde que vous êtes reconnaissant envers tous ceux qui vous expliquent quelque chose. N'étirez pas le sujet avec des messages séparés...

 
Alexey Viktorov:

Suivant : Nous avons plusieurs cordes

  1. i de type int qui est explicitement de type string (soit 0)
  2. " : "
  3. eArray[i] converti en type de chaîne de caractèresviaDoubleToString (que ce soit 1.6251)
  4. ", "




Pourquoi 1.6251 ne peut pas être converti en chaîne de caractères explicitement comme i ? Il est plus court et économise les ressources informatiques..... il me semble.

Merci pour l'explication

 
Alexey Viktorov:

J'ai ajouté à mon post hâtivement écrit.

Il est déjà clair pour tout le monde que vous êtes reconnaissant envers tous ceux qui vous expliquent quelque chose. N'étirez pas le sujet avec des messages séparés...

Ok. Ensuite, un remerciement pour chacune de vos réponses sera implicite par défaut( sera stocké dans une variable :) :):) :) ).... si vous le voulez bien.