Errores, fallos, preguntas - página 2461
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
¿Podría ampliar este punto?
Lo que sigue es mi opinión subjetiva, si me equivoco en algo, estaré encantado de ayudar.
StringLen solía funcionar O(n) hasta el primer carácter NULL (0x0000) en la cadena, ahora funciona O(1).
La longitud de las cadenas siempre podía truncarse mediante StringSetCharacter(str, pos, 0x00), pero por alguna razón introdujeron StringSetLength.
Lo más probable es que el analizador haya resuelto la tarea de aceleración del código al trabajar con cadenas.
La tarea de acelerar el código fue resuelta y a nadie le importa que la mitad de la función ahora maneje caracteres NULL en la cadena y la otra mitad no.
El resultado:
Lo que sigue es mi opinión subjetiva, si me equivoco en algo, estaré encantado de ayudar.
StringLen solía funcionar O(n) hasta el primer carácter NULL (0x0000) en la cadena pero ahora funciona O(1).
La longitud de las cadenas siempre podía truncarse mediante StringSetCharacter(str, pos, 0x00), pero por alguna razón introdujeron StringSetLength.
Lo más probable es que se haya resuelto la tarea de aceleración del código al trabajar con cadenas.
La tarea de acelerar el código fue resuelta y a nadie le importa que la mitad de la función ahora maneje caracteres NULL en la cadena y la otra mitad no.
El resultado:
StringLen solía funcionar O(n) hasta el primer carácter NULL (0x0000) en la cadena, ahora funciona O(1)
A los desarrolladores:
Por favor, añada la capacidad de especificar la generación forzada de código para el operador de asignación por defecto (constructor de copia):
Es un poco complicado. Es más fácil utilizar la analogía del constructor por defecto:
1) cualquier operador de asignación anula el operador de asignación por defecto
2) cualquier operador de copia anula el operador de copia por defecto
Sólo errores parcialmente corregidos ... ¿¡Por qué no!?
Debido a que MQL no tiene una idea consistente cuando se trata de cadenas con caracteres NULL este es el problema.
Por ejemplo, StringToShortArray admite caracteres NULL en una cadena, mientras que la función inversa ShortArrayToString no...
En consecuencia, se dedica más tiempo a detectar fallos y a buscar soluciones que a resolver tareas concretas.
Es un poco complicado. Es más fácil utilizar la analogía del constructor por defecto:
1) cualquier operador de asignación anula el operador de asignación por defecto
2) cualquier operador de copia anula el operador de copia por defecto
No necesito deshacer; necesito, por el contrario, una generación forzada.
MQL no tiene ninguna funcionalidad para la copia profunda de tipos complejos, y en operador de asignación y constructor de copia se implementan por defecto.
Como no hay una idea consistente en MQL cuando se trata de cadenas con caracteres NULL, este es el problema.
Por ejemplo, StringToShortArray admite caracteres NULL en una cadena, mientras que su función inversa ShortArrayToString no...
Por un lado sí, por otro lado se dice explícitamente en la Documentación: "o hasta que se cumpla el terminal 0".
Por un lado sí, por otro lado se dice explícitamente en la Documentación(que no lo hace)
YStringToShortArray dice lo mismo:
Sin embargo, esto no impide que maneje adecuadamente los caracteres NULL en la cadena.