Errores, fallos, preguntas - página 1337

 
Vladimir Pastushak:

Los desarrolladores no carecen de humor.

Me parece que es una descarga, y una especie de balanceo del árbol "Download" a la derecha o a la izquierda.

Si se trata de un "balanceo", también se podría comparar con un árbol: "derecha/izquierda" - también tiene humor (confunde "derecha/izquierda")
 
Artyom Trishkin:
Si "se balancea", podrías haberlo comparado con un árbol: "derecha/izquierda" - también tienes humor (fusionado "derecha/izquierda")

"balanceo" en el barco ,

Y lo de (derecha/izquierda fundidas) no es culpa mía, es de Firefox.

 
Si compila los archivos en ME, en la carpeta Proyectos, los archivos compilados se crean en las carpetas apropiadas Expertos, Indicadores, Scripts. Pero si compilo con un compilador independiente, esto no sucede - los archivos compilados se crean en la carpeta con el código fuente. ¿Se supone que es así o hay que utilizar las teclas correspondientes?
 

En los caracteres BR-8.15 y BR-10.15 se producen fallos, los demás periodos BR están bien.

build 1150 real opening win7 x64 max

Archivos de video .mp4 en el trailer.

+ en el periodo M1 (por ejemplo)

Si se pulsa el botón "autodesplazamiento del gráfico hasta el final con la llegada de nuevos ticks" - el gráfico se desplaza al principio

Entonces, si se pulsa la tecla "FIN", el gráfico se desplaza al final durante un segundo y, de nuevo, se desplaza al principio.

Archivos adjuntos:
br-bag.zip  7609 kb
br-bag2.zip  3720 kb
 
Alexey Navoykov:

Antes no le había prestado mucha atención, pero ahora, al trabajar con matrices grandes de objetos de clase, he notado un consumo de memoria demasiado grande. Lo he comprobado mediante sizeof() y una clase absolutamente vacía ocupa 16 bytes. Y teniendo en cuenta que las clases aquí son gestionadas, añadimos 8 bytes más por puntero. El total es de 24 bytes. Es un poco demasiado.

He mirado la documentación y he visto lo que he encontrado allí:

La cuestión es por qué las clases simples (las que no participan en la herencia) necesitan la tabla de funciones virtuales, ya que todo se sabe sobre estas clases en la fase de compilación.

Resultaque los métodos en ellos se llaman de la misma manera que los métodos virtuales, es decir, hay una redirección adicional de acceso a través de la tabla. ¿Y dónde está la alabada optimización del compilador? ¿Cómo podemos afirmar después de eso cualquier comparación de rendimiento con C++?

La suposición resaltada es incorrecta, sólo los métodos virtuales son llamados a través de la tabla y mi afirmación no es sólo cierta para el compilador MQL.
Además, MQL, algunas llamadas virtuales se ejecutan como llamadas a funciones normales, no a través de la tabla.
Como Renat escribió, las clases en MQL realmente siempre tienen una tabla virtual, que toma 8 bytes + 8 bytes de metainformación.
 
Vladimir Pastushak:

Los desarrolladores no carecen de humor.

Me parece que es una descarga, y una especie de balanceo del árbol "Download" a la derecha o a la izquierda.

Gracias, corregido a "Descargando".
 
Ilyas:
La suposición resaltada es incorrecta, sólo los métodos virtuales son llamados a través de la tabla y mi afirmación no es sólo cierta para el compilador MQL.
Además, en MQL, algunas llamadas virtuales se hacen como llamadas a funciones normales, no a través de una tabla.
Como escribió Renat, las clases en MQL efectivamente siempre tienen una tabla virtual que toma 8 bytes + 8 bytes de metainformación.
De todas formas, ¿podrías aclarar por qué una clase simple, que no hereda de nadie y por tanto no participa en la virtualización, necesita una tabla? Renat mencionó los destructores virtuales, pero en este caso no tenemos nada que virtualizar. Sólo hay un destructor, por lo que también puede ser inline, ¿no? Esto deja sólo 8 bytes de metadatos.
 
Alexey Navoykov:
Gracias por la respuesta, pero ¿podrías explicar por qué una clase simple, que no hereda de nadie y por tanto no participa en la virtualización, necesita una tabla? Renat mencionó los destructores virtuales, pero en este caso no hay nada que virtualizar. Sólo hay un destructor, por lo que también se puede inlinear, ¿no?, dejando así sólo 8 bytes de metadatos.
Si una clase no se hereda, su destructor se llama como una función normal no virtual y se inlinea si cumple los criterios de inline.

El sistema de tiempo de ejecución (entorno de programa MQL) está construido con la suposición de que una clase ocupa al menos 16 bytes.
 
Si compila los archivos en ME, en la carpeta Proyectos, los archivos compilados se crean en las carpetas apropiadas Expertos, Indicadores, Scripts. Pero si compilo con un compilador independiente, esto no sucede - los archivos compilados se crean en la carpeta con el código fuente. ¿Se supone que es así o hay que utilizar las teclas correspondientes?
 

build 854 vin 10 64 x

Cuando se prueban EAs con visualización, al intentar cerrar cualquier otra ventana abierta previamente que no sea la ventana de trabajo actual con la prueba, la prueba se interrumpe ...

Cerrado mediante el botón central del ratón y el menú contextual ...