[¡Archivo!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No podría ir a ningún sitio sin ti - 2. - página 311

 
chief2000:

- ¿Es posible averiguar el número de elementos de una matriz en un archivo? ¿Cómo evitar acciones innecesarias en este caso en general?


FileSize(handle) dividido por el tamaño del elemento = número de elementos?
 
Figar0:

FileSize(handle) dividido por el tamaño del elemento = número de elementos?

¿Es una suposición?

¿Cómo se sabe el tamaño de un elemento en un archivo binario? ¿Quizás alguna parte esté ocupada por más elementos?

 
chief2000:

Si se establece un recuento demasiado alto, se obtienen muchos valores nulos (¿verdad?)

La documentación parece decir

Функция возвращает количество фактически прочитанных элементов.
 
chief2000:

¿Es una suposición?

¿Cómo se sabe el tamaño de un elemento en un archivo binario? ¿Quizás alguna parte esté ocupada por algo más que los elementos?


El tamaño de un artículo depende de lo que escriba allí, ya sea 4 u 8. ¿Cómo es su proceso de escritura?
 
Roger:

La documentación parece decir

Si un archivo tiene 1000 elementos y count=20, en realidad leerá 20.

¿Pero qué pasa si count=5000?

No está claro lo que quieren decir con "Antes de leer los datos el array debe tener un tamaño suficiente" - sería más fácil leer todos los elementos en el array por número de elementos, y luego si es necesario se puede truncar el array, etc.

 
Figar0:

El tamaño del artículo depende de lo que escriba allí, ya sea 4 u 8. ¿Cómo es su proceso de escritura?

que utilizo (la escritura y la lectura son dos pasos independientes):

 FileWriteArray( int handle, object array[], int start, int count) 
 
chief2000:

que utilizo (la escritura y la lectura son dos pasos independientes):


int FileWriteArray( int handle, object array[], int start, int count)

La función escribe la matriz en un archivo binario. Las matrices como int, bool, datetime y color se escriben como 4 bytes enteros. Las matrices de tipo double se escriben como números de punto flotante. 8 bytes números de punto flotante.

He resumido lo que necesitas saber. Si se escribió una matriz de dobles en el archivo, dividiendo el tamaño del archivo por 8 se obtendrá el número de elementos de la matriz en el archivo.

 
Figar0:

int FileWriteArray( int handle, object array[], int start, int count)

La función escribe la matriz en un archivo binario. Las matrices como int, bool, datetime y color se escriben elemento por elemento como 4 bytes enteros. Las matrices de tipo double se escriben como números de punto flotante. 8 bytes números de punto flotante.

He resaltado lo que necesitas saber. Si se escribió un doble de matriz en un archivo, dividiendo el tamaño del archivo por 8 se obtendrá el número de elementos de la matriz en el archivo.

Ahora abrí un archivo guardado en un visor de texto - esto es lo que parece:

Parece que tiene unos 50 elementos (debería haber más o menos ese número de elementos), pero su tamaño es de 2432 bytes. Al parecer, almacena "espacios en blanco" en él.

 
Hola a todos. Por favor, avisa. ¿Cómo puedo utilizar MQL4 en un indicador en una ventana separada para dibujar el histograma no desde cero, sino desde los valores especificados. Quiero que el indicador Ishimoku dibuje los valores para otros marcos temporales en una ventana separada.
 
chief2000: Aparentemente, almacena el "blanco" en él.
Almacena lo que se pone en él) No hay milagros.
Razón de la queja: