Ver Mensaje Individual
  #6  
Antiguo 25-08-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola tarco35.

Una opción que te puede servir es usar archivos de acceso aleatorio, por ejemplo:
Código Delphi [-]
type
 TRegGrafica = packed record
  Valores : array [0..64,0..1500] of Real;
  Numero_Valores : array [0..64] of Integer;
  NumeroLectura : LongInt;
 end;
 TFileRegGrafica = file of TRegGrafica;

var
  Reg: TRegGrafica;
  FileReg: TFileRegGrafica;
Este tipo de tratamiento, te permite acceder de forma directa, tanto en lectura como en escritura, a los registros en disco:
Código Delphi [-]
  Seek(FileReg, 15); // posicion 15
  Read(FileReg, Reg); // o Write(FileReg, Reg);

Es más, gracias a un pequeño truco con moldeos podes usar un arreglo de registros para acceder a bloques de registros en un sólo acceso a disco:
Código Delphi [-]
var
  VecRec: array[0..50] of TRegGrafica;
begin
  (* se supone que el arreglo tiene los datos *)

  // guarda 50 registros en un solo acceso a disco
  BlockWrite(file(FileReg), Reg, 49); 

  // lee los primeros 50 registros en un solo acceso a disco
  Seek(FileReg, 0);
  BlockRead(file(FileReg), Reg, 49);
Y dado que los accesos a disco son una de las taréas más lentas, brinda una gran ganancia de velocidad. Una vez cargado el arreglo podes manejar todo desde memoria.

Si tenes dificultad para implementarlo, comentame y te preparo/adjunto un código demo.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita