Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Leer archivo binario muy grande

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Leer archivo binario muy grande Responder citando

Hola a todos, estoy intentando leer un archivo de 5gb y al principio va bien, me situo con fseek en la dirección que quiero leer y todo bien, pero cuando quiero direccionar una posición más grande de 32bits no llega, hay alguna forma de hacerlo con bcb6?
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Aún cuando no mencionas el proceso del como haces la lectura de un archivo de 5 Gigabytes, por ende NO puedes "subir" un archivo de ese tamaño a memoria es decir si tiene 8Gb de RAM y subes un archivo con fopen() para usar fseek(), literalmente estas "subiendo" los 5Gb a la RAM dejando así 3Gb de RAM para tu SO y la misma aplicación por tal motivo te quedas sin memoria para seguir ejecutando dicho proceso.

Un forma es hacer uso de Stream para "subir" por partes lo que requieres en memoria.

En la documentación de embarcadero tienes este ejemplo: enlace que puede ayudarte.

También es bueno usar el botón buscar del foro, muchas veces son preguntas que ya están contestadas.

Saludos!!
_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

Gracias por responder, he buscado por el foro y por internet llevo unos dias ya, Very Happy , al final lo he conseguido con CreateFile SetFilePointerEx y ReadFile.

Por cierto me has dejado con una duda, efectivamente antes lo hacia con fopen y fseek y fread, y cuando abro el archivo no veo aumento del consumo de ram, ahora con createfile tampoco pero tu crees que si ejecuto el programa en un PC de 4gb de ram fallará?

Gracias por la ayuda
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

El limite de tamaño de un archivo lo da el sistema de formato del disco y el limite de lo que puedes leer lo dan las API y los tipos usados:
Código:

2^32 =              4.294.967.296  posiciones de memoria direcionables
2^64 = 18.446.744.073.709.551.616  posiciones de memoria direcionables

Windows Se encarga de que la cantidad de RAM real de la que dispones te resulte transparente usando memoria virtual. Digamos que si no tienes RAM suficiente, el S.O. dispone del HD y simula que tiene toda la RAM necesaria para la necesidad requerida. La ventaja de tener más RAM real es que usará menos el disco y ganarás en velocidad. De hecho cada aplicación que está ejecutándose, cree que dispone de toda la memoria disponible en del PC, la magia la hace el SO con el sistema de paginación de memoria virtual.

En resumen, a tu Aplicación le da igual cuanta memoria RAM real tiene tu PC, de hecho es un dato que no va a conocer pero que afectará a su rendimiento. Esta es la razón por la que no ves mayor consumo de RAM

Saludos.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Gracias por la aclaración Escafandra, he probado en un pc con 2gb de RAM con un archivo de 5,4gb y puedo leerlo entero, efectivamente rápido no es pero en este caso la velocidad no es importante así que problema solucionado.
Gracias a los dos por vuestro tiempo.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.