Ver Mensaje Individual
  #5  
Antiguo 04-04-2014
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Reputación: 28
Lepe Va por buen camino
Lista dinámica. Solo usará la memoria que necesite el fichero.

Reservar todo desde un principio es un gasto tremendo, además de limitar a ese tamaño.

Yo no uso registros nunca, siempre objetos, pero bueno, podrías tirar por:
- array of string[10] y luego con SetLength ir añadiendo los registros.

- Crear un descendiente de TList y cargar ahí cada registro. La ventaja es que puedes ordenar los datos con el TList de forma rápida, los algoritmos de ordenación están ya creados. Las funciones de insert, delete, indexof, etc, ya las tienes implementadas.

- Usar un TFileStream que es acceso directo a fichero. Es lo que usan notepad++ para abrir ficheros de textos de muchos megas en pocos segundos. Si son registros de tamaño fijo como veo, puedes calcular qué registro quieres leer y acceder solo a ese. Hoy día los discos son muy rápidos. Yo voto por este método si no necesitas ordenar los datos, comparar, etc.

También puedes tirar de TObjectList y si usas los nuevos XE, de Templates, que son Listas de fácil implementación.

Son casi 2 Megas de RAM (suponiendo cada carácter es 1 byte)...


Perdón, no he respondido a tu pregunta. Stack Overflow es porque los datos lo estás cargando en la pila de la aplicación y se queda corta para pasar todos esos datos ¿lo pasas por parámetro a otras funciones?. La solución guarra es aumentar el tamaño de la pila en Delphi para tu proyecto (Opciones del proyecto).

Saludos.
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita