Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1416

 
ANDREY:

Gracias por la aclaración.

Por cierto, he quitado los pluses amarillos y el compilador ha dado un error. Así que juegan algún papel en toda esta construcción. Pero lo que .... todavía no entiendo. Para qué son necesarios cuando la adición de cadenas se realiza sólo mediante el uso de pluses azules. A juzgar por sus explicaciones, no hay nada más en esta construcción ..... si no me equivoco.

Y sobre la cadena(i)... Sobre la conversión de tipos .... está más o menos claro para mí. Lo que no está claro es que..... string es el nombre de un tipo de variable. i es una variable contadora que denota el índice de un elemento del array. ¿Y por qué estái entre paréntesis () ? Hasta ahora he pensado que los paréntesis son una característica de la función. Por ejemplo, Print( ). Y en algunas funciones se ponen diferentes datos dentro de los paréntesis. Pero, ¿qué significan los paréntesis o qué función cumplen los paréntesis con respecto a i y a toda esta construcción - cadena(i)? A primera vista, parece que antes la variable i tenía un tipo int (entero), y luego cambiaste el tipo de la variable i de int a string (cadena) . Pero los paréntesis redondos que contienen no me dejan pensar así.

Gracias por la explicación.

Esto no es una conversión de tipo, sino una conversión de un valor en la variable i

A menudo se puede ver de esta manera

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

No se trata de una conversión de tipo, sino de una transformación del valor que se encuentra en la variable i

puede verse más a menudo como


Gracias por el consejo. Conversión del valor de la variable i. ¿Qué quiere decir en mi código?
1. El valor
de i era 0, después de(cadena)i+ pasó a ser 1, luego 2 y así hasta 30. ¿Por qué necesito (cadena) en lugar de sóloi++?
2. ¿El tipo de la variable i era int, y después de (cadena)i+ se convirtió en cadena? Pues bien, no se trata de una conversión de valores, sino de una conversión del tipo de la variable.


Y también .... Tal vez puedas explicarme en qué consisten los pluses amarillos. ¿O para qué sirven?

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

Gracias por la explicación.

 
ANDREY:

Gracias por el consejo. Convierte el valor de la variable i. ¿Qué significa mi código?
1. El valor
de i era 0, después de(cadena)i+ pasó a ser 1, luego 2 y así hasta 30. ¿Por qué necesito (cadena) en lugar de sóloi++?
2. ¿El tipo de la variable i era int, y después de (cadena)i+ se convirtió en cadena? Pues bien, no se trata de una conversión de valores, sino de una transformación del tipo de la variable.


Y también .... Tal vez puedas explicarme en qué consisten los pluses amarillos. ¿O para qué sirven?

Gracias por la explicación.

La conversión de tipos o la conversión explícita de tipos son iguales. La documentación utiliza ambas expresiones. Has anotado correctamente la advertencia de Alexey, es la conversión de tipo que...

Además: Tenemos varias cadenas

  1. i de tipo int que fue convertido explícitamente a tipo string (que sea 0)
  2. ": "
  3. eArray[i] se convierte en una cadena a través de la función DoubleToString (que sea 1,6251)
  4. ", "

El valor de i se incrementa en el bucle en cada iteración y se mete en esta cadena de...

Tenga en cuenta que los pluses se ponen entre estas cadenas. Estos pluses suman estas líneas en una sola. El resultado es la cadena "0: 1,6251", y luego esta cadena se añade a la cadena de la variable eStr mediante el operador +=


 
ANDREY:

Gracias por el consejo. Convierte el valor de la variable i. ¿Qué significa mi código?
1. El valor
de i era 0, después de(cadena)i+ pasó a ser 1, luego 2 y así hasta 30. ¿Por qué necesito (cadena) en lugar de sóloi++?
2. ¿El tipo de la variable i era int, y después de (cadena)i+ se convirtió en cadena? Pues bien, no se trata de una conversión de valores, sino de una transformación del tipo de la variable.


Y también .... Tal vez puedas explicarme en qué consisten los pluses amarillos. ¿O para qué sirven?

Gracias por la explicación.

Con los pluses amarillos se forma una cadena (texto) que se emite conPrint();

Puedes hacer lo mismo con StringConcatenate()

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

Se utiliza el signo más amarillo para formar una cadena (texto), que se emite conPrint();

Puedes hacer lo mismo con StringConcatenate()

No recomiendo utilizar esta función ya que funciona de manera muy diferente en MQL5 que en MQL4. En consecuencia, puede ser difícil de entender cuando se cambia a MQL5.


Pero tal vez me equivoque...

mql4

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

mql5

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

Como puedes ver, en mql5, es muy similar a la simple suma de cadenas.

 eStr+=string(i)+": "+DoubleToString(eArray[i],4)+", ";
 StringConcatenate(eStr, i, ": ", eArray[i], ", ");
Y la conversión de tipos tiene lugar en esta función sin ninguna preocupación adicional.
 
Alexey Viktorov:

No recomiendo utilizar esta función porque funciona de forma diferente en MQL5 que en MQL4. En consecuencia, puede ser difícil de entender cuando se cambia a MQL5

Gracias por la valiosa información

 
Alekseu Fedotov:

Se utiliza el signo amarillo más para formar una cadena (texto), que se emite conPrint();

Puedes hacer lo mismo con StringConcatenate()

Gracias por la nueva información para mí

 
ANDREY:

Gracias por la valiosa información

He añadido a mi mensaje escrito apresuradamente.

Ya se ve lo agradecido que estás a todos los que te explican algo. No extiendas el tema con mensajes separados...

 
Alexey Viktorov:

Siguiente: Tenemos varias cadenas

  1. i de tipo int que es explícitamente de tipo cadena (que sea 0)
  2. ": "
  3. eArray[i] convertido a tipo cadenamedianteDoubleToString (que sea 1,6251)
  4. ", "




¿Por qué no se puede convertir 1,6251 al tipo de cadena explícitamente como i? Es más corto y ahorra recursos computacionales..... me parece.

Gracias por la explicación

 
Alexey Viktorov:

He añadido a mi post escrito apresuradamente.

Ya se ve lo agradecido que estás a todos los que te explican algo. No extiendas el tema con mensajes separados...

De acuerdo. Entonces un agradecimiento por cada una de sus respuestas estará implícito por defecto( se almacenará en una variable :):):) ).... si no te importa.