Errores, fallos, preguntas - página 2243
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
El código del indicador mql4 ha dejado de funcionar. ¿Cómo puedo solucionarlo?
El editor dice 'ObjectSetInteger' - no se puede aplicar ninguna de las sobrecargas a la llamada de función
Ha estado funcionando durante años y de repente ha dejado de hacerlo. Sin embargo, es una pena.
Pero, ¿por qué has mezclado dos estilos? Si utiliza la primera línea para especificar el código de la flecha, entonces utilice la segunda línea con el mismo estilo:
Intenté subir una nueva versión del indicador al mercado. La prueba terminó con errores. Informe de errores como en la imagen del apéndice con el siguiente contenido:
] ¿Tal vez el problema esté en el probador?¿Por qué has mezclado los dos estilos? Si utiliza la primera línea para establecer el código de la flecha, entonces utilice la segunda línea con el mismo estilo:
Gracias, eso ayudó.
¿2 estilos? No conocía los estilos. Es que antes sólo se podía hacer esta sección de esa manera. Ha habido un cambio. Llevo más de 10 años programando en MQL4. Y ahora los desarrolladores han cambiado el lenguaje y muchos de mis códigos ya no funcionan. Estoy muy decepcionado. Los cambios no fueron para mejor. Esto significa que tengo que rehacer una gran cantidad de códigos. Aunque son viejos, tuvieron mucho uso.
Intenté subir una nueva versión del indicador al mercado. La prueba terminó con errores. Informe de error como se muestra en la imagen del anexo con el siguiente contenido:
¿Tal vez el problema esté en el probador?Por favor, cree una solicitud a servicedesk, lo resolveremos
UPD: Encontré su solicitud.
Libera el buffer de cualquier array dinámico y establece el tamaño de la dimensión cero a 0.
Cuando se escriben scripts e indicadores, la necesidad de utilizar la función ArrayFree() puede ocurrir raramente, ya que toda la memoria utilizada se libera inmediatamente, y en los indicadores personalizados el trabajo principal con las matrices se realiza accediendo a los buffers del indicador, cuyos tamaños son gestionados automáticamente por el subsistema ejecutivo del terminal.
Si necesita gestionar la memoria por su cuenta en condiciones dinámicas complejas, la función ArrayFree() le permitirá liberar explícitamente y de forma inmediata la memoria ocupada por un array dinámico que ya no se necesita.
¿Lo ves? Innecesario.
Naturalmente, una vez que se libera la memoria de la misma, y se vuelve a asignar un tamaño a la matriz, nadie puede garantizar su contenido.
Utiliza la inicialización de arrays: ArrayInitialize()
¿Cómo que nadie garantiza el contenido? Si la memoria se liberó, ya no existe, así que ¿cómo se mete la basura en ella? ¿O borrar la memoria implica dar permiso para que esa memoria sea utilizada por otra parte del programa, y no borrarla realmente?
¿Cómo que nadie garantiza el contenido? Si la memoria se ha borrado, ya no está ahí, así que ¿cómo se mete la basura en ella? ¿O borrar la memoria implica dar permiso para que esa memoria sea utilizada por otra parte del programa, y no borrarla realmente?
ArrayResize no limpia la memoria, por lo que contiene basura, del "consumidor" anterior.
Esto se hace por velocidad, porque después de asignar memoria a un array, en el 99,99(9)% de los casos, el usuario lo "llenará" con sus datos.
Gracias, eso ayudó.
¿Dos estilos? No conocía los estilos. Es que antes sólo se podía hacer esta sección de esa manera. Ha habido un cambio. Llevo más de 10 años programando en MQL4. Y ahora los desarrolladores han cambiado el lenguaje y muchos de mis códigos ya no funcionan. Estoy muy decepcionado. Los cambios no fueron para mejor. Esto significa que tengo que rehacer una gran cantidad de códigos. Pueden ser viejos, pero eran mucho más útiles.
¿No es así como se establecía el código de flechas antes de que se introdujeran las funciones ObjectSetXXX de mql4?
También he estado escribiendo en mql durante unos 10 años (tal vez más - cómo pasa el tiempo...) - Estoy empezando a olvidar las funciones estrictamente cuaternarias - escribo código multiplataforma cuando es posible.
ArrayResize no limpia la memoria, por eso contiene basura del "consumidor" anterior.
Esto se hace por velocidad, ya que tras la asignación de memoria a un array, en el 99,99(9)% de los casos, el usuario lo "llenará" con sus datos.
Entonces, ¿por qué los valores numéricos son constantes "basura", incluso después de reiniciar el terminal?
Personalmente, me quedé atascado con la simple suma del contenido de las celdas de otro array, y he estado dándole vueltas al problema durante mucho tiempo.
Entonces, ¿por qué los valores numéricos son constantes "basura", incluso después de reiniciar el terminal?
Personalmente, me quemé con una simple suma del contenido de las celdas de otro array, y me pregunté durante mucho tiempo qué pasaba.
No importa el tipo de datos que contenga el array no inicializado, en cualquier momento, los datos pueden cambiar, nadie garantiza su valor.
Por eso, el uso de variables no inicializadas (lectura de memoria) a veces conduce a situaciones en las que se tarda mucho en encontrar la causa:
Sólo puedo dar algunos consejos.
Debes acostumbrarte a inicializar siempre los datos, para que en el futuro no pierdas mucho tiempo buscando errores relacionados con la falta de inicialización.
¿Cómo que nadie garantiza el contenido? Si la memoria se ha borrado, ya no está ahí, así que ¿cómo se mete la basura en ella? ¿O borrar la memoria implica dar permiso para que esa memoria sea utilizada por otra parte del programa, y no borrarla realmente?
¿Qué quieres decir con "no"? No se retira el lápiz de memoria de la ranura de la placa base. Y si la memoria está presente y se libera (no se inicializa con un valor, sino que se libera), entonces empieza a utilizarse para otras necesidades del programa.