Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 1118
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
Le rogamos que nos informe sobre la posible evolución de la situación.
Tengo un array[100], también he guardado un archivo binario de tamaño [1000], cómo devolver el array de los últimos 100 valores del archivo binario. ¿Hay algo universal? Llevo 12 horas trabajando de nuevo en esto y nada.
Le rogamos que nos informe sobre la posible evolución de la situación.
Tengo un array[100], también he guardado un archivo binario de tamaño [1000], cómo devolver el array de los últimos 100 valores del archivo binario. ¿Hay algo universal? Llevo 12 horas trabajando en esto y nada.
Si no recuerdo mal, estaba escrito en mql4, que si count = WHOLE_ARRAY o el valor excede el número de elementos del array, entonces el array entero se escribe al final. Y no decía nada de ningún margen. Significa que no podemos hablar de 1000.
Para comprobarlo, cuenta cuántos valores se escriben y el tamaño del archivo.
Si no recuerdo mal, en mql4 estaba escrito que si count = WHOLE_ARRAY o el valor supera el número de elementos del array, se escribe todo el array hasta el final. Y no decía nada de ningún margen. Por lo tanto, puede quedar absolutamente descartado si no hay un margen de 1000 mil puntos.
Para comprobarlo, calcule cuántos valores se escriben y el tamaño del archivo resultante.
No quiero decir que después de escribir el array en el binario, aparezcan nuevos datos, y los siga escribiendo en el binario a través de un nuevo array dimensionado (= la dimensión de la columna del array primario), cada vez hasta el final del archivo, para una nueva columna j
entonces tenemos que eliminar los datos del binario iguales en número al índice del array original, que fue transferido al binario en la primera integración. Sin embargo, los últimos datos se incluirán en esta matriz limitada, porque el binario es mayor que la matriz primaria, ya que se han añadido filas secundarias. Las filas secundarias deben ir en la matriz de lectura, y las primeras filas en binario deben estar fuera del área.
No me refiero a que después de escribir el array en el binario, aparezcan nuevos datos al cabo de un momento, que sigo escribiendo en el binario a través de un nuevo array dimensionado (= dimensión de la columna del array primario), cada vez al final del fichero, para una nueva columna j
entonces tenemos que eliminar los datos del binario iguales en número al índice del array original, que fue transferido al binario en la primera integración. Sin embargo, los últimos datos deben ser eliminados de forma que se incluyan en este array limitado, ya que el binario es mayor que el array primario debido a la adición de filas secundarias.
Entonces no es necesario asignar un tamaño al array antes de la lectura. Si no es el primer dato que se necesita, entonces calcula el tamaño en bytes y desplaza la posición de inicio de la lectura en la cantidad adecuada.
Esa es la cuestión de cómo calcular los bytes
s1=FileReadInteger(h,INT_VALUE); //ножно ли перед восстановлением считываем размер массива?
может как то через это sizeof
Esta es la cuestión de cómo calcular los bytes
s1=FileReadInteger(h,INT_VALUE); //ножно ли перед восстановлением считываем размер массива?
может как то через это sizeof
Si los datos son de tipo doble, divida el tamaño del archivo por el número de bytes que ocupa el número de tipo doble, es decir, por 8.
Si los datos son dobles, se divide el tamaño del archivo por el número de bytes que ocupa el número doble, es decir, por 8.
¿Es deFileFindFirst?
o simplemente escanear cada nueva línea en bytes
file_size=+FileSize(handle); // чтобы выяснить индекс от которого открывать
FileReadArray(file_handle,arr,file_size,WHOLE_ARRAY);
ConFileFindFirst?
¿A través deFileFindFirst?
O simplemente resumir cada nueva línea en bytes
file_size=+FileSize(handle); // чтобы выяснить индекс от которого открывать
FileReadArray(file_handle,arr,file_size,WHOLE_ARRAY);
No deberías haber corregido tu post después de responderlo...
No es así. Antes de leer un array, defina su tamaño file_size = FileSize(handle); y divida por la memoria ocupada por el tipo de datos, es decir, para double por 8. Se obtiene el número de números en el archivo. Si el array es bidimensional, el número de registros en el archivo será dos veces menor. Y se obtiene cuántos bytes se deben desplazar para leer de la línea deseada.
Deberías haber corregido tu post después de responder a él...
No es así. Antes de leer un array, defina su tamaño file_size = FileSize(handle); y divida por la memoria ocupada por el tipo de datos, es decir, para double por 8. Se obtiene el número de números en el archivo. Si el array es bidimensional, el número de registros en el archivo será dos veces menor. Y se obtiene cuántos bytes se deben desplazar para leer de la línea deseada.