Características del lenguaje mql5, sutilezas y técnicas - página 161
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
2020.01.27 01:15:57.859 tst (EURUSD,H1) (null) , 0.000000 , 0
si elimino la conversión de tipos, la expresión 'NULL' - de tipo 'void' es ilegal
interesante, resulta que la cadena nput puede ser inicializada void
NULL es la inicialización. El ejemplo muestra a propósito una cadena no introducida.
NULL / NIL (en otros términos) no puede ser una inicialización de una entidad de cadena constante.
Al menos porque la cadena mql no es un "puntero" como en C. No tiene un estado especial "nada en absoluto".
PS (oh, no me lo esperaba de mí mismo)
No tiene un estado especial de "nada en absoluto"
Foro sobre trading, sistemas de trading automatizados y pruebas de estrategias de trading
Peculiaridades de mql5, consejos y trucos
fxsaber, 2020.01.26 15:54
Utilizo esta condición todos los días.
al menos porque una cadena mql no es un "puntero" como en C. No tiene un estado especial "nada en absoluto".
PS (oh, no me lo esperaba de mí mismo).
Por desgracia no, una cadena en MQL es una entidad con memoria asignada.@Ilyas explicó por qué StringBufferLen() puede no mostrar la longitud de la cadena, pero muestra la memoria utilizada para almacenar la cadena.
Utilizo esta condición todos los días.
No es un indicador en absoluto, en MQL4 yo desanimo los punteros a cualquier objeto usando StringConcatenate(), es decir, el trabajo de las funciones incorporadas no está implementado por las reglas de MQL ))
En MQL4, desanudo los punteros a cualquier objeto usando StringConcatenate(), es decir, las funciones incorporadas no están implementadas por las reglas de MQL )))
No hace ninguna diferencia lo que hay dentro.
Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias
Peculiaridades de mql5, consejos y trucos
Igor Makanu, 2020.01.26 22:27
Da igual cómo sea por dentro.
complementado mi post con su ejemplo
También hice un par de experimentos más con la cadena de entrada s = NULL;
por lo que he entendido, mientras no intentemos utilizar el valor de la variable de entrada - será NULL, pero en el momento en que intentemos asignar un valor a otra variable o simplemente la desactive, NULL desaparecerá, es decir, se asignará memoria a esta variable de entrada
por lo que entiendo, mientras no estemos intentando utilizar el valor de una variable de entrada - este valor será NULL, pero en ese momento, si intentamos asignar el valor de esta variable de entrada a otra variable o simplemente desestablecer esta variable de entrada, este NULL desaparecerá, es decir, esta variable de entrada tendrá memoria asignada
El mecanismo de funcionamiento de la variable de entrada se ha descrito con detalle anteriormente.
Da igual lo que haya dentro.
hay (todavía) especificidad de desreferenciación de entidades (no hay punteros en mql, no es C, que haya entidades)
input es una const declarada al inicio. no se le puede dar físicamente el valor "NULL".
const string nothing=NULL; /// <--- ЭТО ЧТО ?
Sí, este comportamiento es probablemente "a prueba de tontos".
Aparentemente, como la variable de entrada debe ser inicializada, el= NULL se equipara artificialmente a ="", cuando la variable ya ocupa al menos un byte en la memoria.
En MQL5 las entradas:
Son absolutamente idénticos. No se asigna memoria para la variable. De todos modos, no he encontrado ninguna diferencia.
En java, por ejemplo, estos registros son ligeramente diferentes, a pesar de que tampoco se asigna memoria para la variable en ambos casos. La primera variante (String str = null;) se considerará inicializada, aunque no se asigna memoria para la variable y ésta puede imprimirse como vacía. En el segundo caso (String str;) al intentar imprimir la variable, se generará un error de variable no inicializada.
Es decir, MQL5 es más tolerante en este sentido.
Cuál es mejor, ni siquiera lo sé.
¿Cómo no se asigna memoria a una variable?
La memoria se asigna y la variable contiene basura arbitraria.
Y el hecho de que la cadena no emita ningún valor, es lógico que el buffer esté vacío.
¿Cómo no se asigna memoria a una variable?
La memoria se asigna, pero la variable no contiene basura arbitraria.
Y el hecho de que la cadena no emita ningún valor, es lógico que el buffer esté vacío.