Características del lenguaje mql5, sutilezas y técnicas - página 162
![MQL5 - Lenguaje de estrategias comerciales para el terminal de cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
para las estructuras y clases que incluyen cadenas o matrices dinámicas o referencias a clases, sizeof() apuntará al cielo.
y puedo entenderlo :-)
El tipo de cadena en mql es muy complicado, y no se revela completamente en la documentación.
Pero se puede adivinar desde el lenguaje C, que el array char (buffer) está envuelto en el tipo string
Y entonces empiezas a bailar entendiendo cómo funciona ))
El tipo de cadena en mql es muy complicado, y no se revela completamente en la documentación.
Pero el lenguaje C sugiere que el tipo de cadena es una matriz char (buffer)
Y entonces empiezas a bailar entendiendo cómo funciona ))
No hay cadenas en C.
para las estructuras y clases que incluyen cadenas o matrices dinámicas o referencias a clases, sizeof() señalará con el dedo el cielo.
y puedo entenderlo :-)
¿Pero por qué?
Con cualquier array dinámico mostrará el tamaño del objeto array dinámico, que es de 52 bytes en MQL5
No hay tangas en C.
Creo que ya lo hay, pero esa no es la cuestión.
Sí, C tiene char[], está envuelto en mql string
¿Pero por qué?
Con cualquier array dinámico mostrará el tamaño del objeto array dinámico, que es de 52 bytes en MQL5
¿el tamaño de qué y para quién se mostrará?
52 bytes es su dispositivo interno solamente.
No está claro por qué no es de 64, podrían haberse alineado :-)
Creo que ya lo hay, pero esa no es la cuestión.
Sí, C tiene char[], está envuelto en mql string
Bueno, lo entiendo.
No utilizo en absoluto las funciones de cadena. Inmediatamente los convierto en una matriz de caracteres utilizando la función StringToCharArray y luego trabajo con la matriz. He comprobado que es mucho más eficiente.
Especialmente cuando se trata de analizar.
¿el tamaño de qué y para quién se mostrará?
52 bytes es sólo su estructura interna.
No está claro por qué no es de 64, podrían haberlo alineado :-)
Probablemente algún tipo de estructura con diferentes tipos. Por ejemplo, 5 ulong y 3 uint. Tal vez el tiempo está presente para el procesamiento interno y la hora del último acceso. NO LO SÉ. Quién sabe lo que puede contener esta estructura.
Bueno, eso es comprensible.
No uso las funciones de cadena en absoluto. Inmediatamente los convierto en un array de caracteres utilizando la función StringToCharArray y luego trabajo con el array. He comprobado que es mucho más eficiente.
Lo más probable es que la cadena mql sea short[] o wchar_t[] o wchar_t*.
Al fin y al cabo, las cadenas mql están en Unicode, mientras que utf tiene 2 bytes.
Y StringToCharArray convierte de short[] a char[].
Y lo más probable es que bajo mql string haya short[]
Después de todo, hay 2 bytes en la cadena en Unicode en mql.
Y StringToCharArray convierte de short[] a char[]
no me habría dado cuenta. Aunque no excluyo que en algunos casos (cuando se trabaja con Unicode) sea posible. En Java, por ejemplo, el tipo char es de 2 bytes.
Intenté parsear los datos de crypto-exchange en dos variantes: a través de esta librería JSON y a través del trabajo con char array.
La diferencia resultó ser 700(!!) veces por velocidad. Me sorprendió. Quizás esté lejos de ser la mejor implementación de JSON.