Deseos para MT5 - página 72

 
stringo:

Ya hemos hablado de ello. Hemos descubierto que podemos arreglárnoslas con la funcionalidad existente.

¿De verdad? ¿Y de qué funcionalidad se puede prescindir, recuérdame por favor?
 
¿Por qué las variables globales sólo son de tipo doble? Y en el 4, era un terrible obstáculo, y en el 5, no está claro por qué no, en particular las variables de cadena.
Документация по MQL5: Основы языка / Переменные / Глобальные переменные
Документация по MQL5: Основы языка / Переменные / Глобальные переменные
  • www.mql5.com
Основы языка / Переменные / Глобальные переменные - Документация по MQL5
 

TheXpert:
Да ладно? И каким же функционалом можно обойтись, напомните, пожалуйста?

Te lo dije. Disponible.

Por ejemplo, tenemos los archivos de cabecera incluidos una vez. No se necesita #ifdef.

En lugar de macrosustituciones de constantes en función de una condición, podemos utilizar variables que se inicializan de forma diferente en distintas condiciones.

De nuevo, las condiciones pueden ser definidas por variables constantes en lugar de definiciones por defecto.

Presencia de la constante IS_DEBUG_MODE

Capacidad para determinar sobre la marcha en qué entorno funciona el programa (pruebas, depuración, pruebas visuales, optimización, permitir el uso de dll).

 
marketeer:
¿Por qué las variables globales sólo son de tipo double? Ambos en el 4 interferían terriblemente y en el 5 no está claro por qué no, en particular las variables de cadena.

Es el tamaño máximo de los datos numéricos. Puedes poner hasta 8 bytes de información en una variable global, que puedes interpretar como largo, como 2 ints o como 64 bits.

Por qué las variables globales no pueden ser de tipo string, por la misma razón que las variables globales no pueden ser arrays: para no complicar innecesariamente

 
stringo:

Por qué las variables globales no pueden ser de tipo string, por la misma razón que las variables globales no pueden ser arrays - para no complicar las cosas innecesariamente

Slava, el público difícilmente estará de acuerdo contigo en este caso: esta complicación no sería en absoluto innecesaria. ¿Quieres hacer una votación?
 
MetaDriver:
Slava, el público difícilmente estará de acuerdo contigo en este caso: esta complicación no sería innecesaria. ¿Quieres hacer una votación?

"Complicar en exceso" en este contexto significa añadir nuevas funcionalidades lentas para un pequeño número de usuarios. Ya se ha implementado un mecanismo de almacenamiento y acceso muy eficiente, y no queremos destruirlo.

Para intercambiar datos entre programas (e incluso entre terminales de clientes en el mismo ordenador) se pueden utilizar archivos. Basta con escribir una vez un par de clases estándar.

Por cierto, sobre las variables globales de cadena. ¿Los necesita para el intercambio de datos entre programas dentro de un mismo terminal cliente? Entonces, ¿por qué no pasar las cadenas directamente, a través de eventos de usuario? Es un método mucho más eficiente que el intercambio de datos a través de variables globales.

 
stringo:

Es el tamaño máximo de los datos numéricos. Puedes poner hasta 8 bytes de información en una variable global, que puedes interpretar como larga, como 2 ints o como 64 bits.

Por qué las variables globales no pueden ser cadenas, por la misma razón que las variables globales no pueden ser arrays - para no complicar las cosas innecesariamente

Ya conoces el razonamiento conocido: te haces la vida más fácil a ti mismo y más difícil a los usuarios, aunque el programa parece estar escrito para su duración. No hay ninguna complicación especial en cuanto a la aplicación para usted, pero tratar de "interpretar" este doble como quiere a falta de otra cosa - esto es una complicación para un solicitante, por no decir más fuerte. Mientras que usted tiene que emular las variables globales de otros tipos con medios improvisados - lo que podría hacer en el sistema una vez, los desarrolladores de aplicaciones hacen en su propio lugar.
 
stringo:

Por cierto, sobre las variables globales de cadena. Los necesitas para intercambiar datos de cadenas entre programas dentro de un terminal cliente, ¿verdad? Entonces, ¿por qué no pasar las cadenas directamente, a través de eventos de usuario? Es un método mucho más eficiente que el intercambio de datos a través de variables globales.

Son cosas completamente diferentes. El estado debe ser almacenado y accesible, mientras que los mensajes son un medio para cambiar de estado.
 
marketeer:
Un razonamiento conocido: te haces la vida más fácil a ti mismo y más difícil a los usuarios, aunque el programa parece estar escrito para ellos. No hay ninguna complicación especial en términos de implementación para usted, pero tratar de "interpretar" este doble de cualquier manera, a falta de otra cosa - esto es una complicación para el usuario, por no decir más fuerte. Mientras que usted tiene que emular las variables globales de otros tipos con medios improvisados - lo que podría hacer en el sistema una vez, los desarrolladores de aplicaciones hacen en su propio lugar.

¿Por qué emular algo? Se puede almacenar cualquier tipo de datos en los 8 bytes de una variable global, excepto una cadena. Si es un dato de tipo double, se utiliza directamente el valor resultante. Si son datos de otro tipo, entonces se necesita una operación adicional de copia de estructuras simples para obtener los datos del tipo correcto.

 
stringo:

¿Por qué emular algo? Se puede almacenar cualquier tipo de datos en los 8 bytes de una variable global, excepto una cadena. Si se trata de datos de tipo double, se utiliza directamente el valor resultante. Si es de otro tipo, se necesita una operación adicional de copia de estructuras simples para obtener los datos del tipo correcto.

Me interesaban sobre todo las cuerdas.