lectura lenta de un archivo .DAT, ¿por que?
Hola foro, tengo un programa el cual abre un archivo .DAT que almacena un número de registros y los graba en una tabla (hecha en access). El problema que tengo es que si hay almacenados entre 1 y 40 registros la lectura se hace rapida pero si hay entre 50 y 100, la lectura es demasiado lenta (puede tardar en leer y grabar los registros unos 15 minutos).
Alguien puede decirme de que manera puedo obtimizar esta lectura.
Acontinuacion pongo el código que utilizo para leer y grabar los registros:
procedure TFimportacion.aceptarClick(Sender: TObject);
var
cantidad: integer;
begin
screen.Cursor:=crhourglass;
progressbar1.position:=0;
if (edit1.Text<>'')then
begin
AssignFile(archivoatm,edit1.text);
Try
Reset(archivoatm);
Except On Exception Do
begin
showmessage('No es posible abrir el archivo.');
close;
exit;
end;
end;
while not eof(archivoatm) do
begin
try
read(archivoatm, visado);
except on exception do
begin
showmessage('Fallo de lectura.');
exit;
end;
end;
cantidad:=visado.cantidad;
label3.Caption:=inttostr(visado.numero)+'/'+visado.letra;
fimportacion.Refresh;
tablas.VISADOS.Append;
tablas.VISADOSNUMERO.value:=visado.numero;
tablas.VISADOSLETRA.value:=visado.letra;
tablas.VISADOSPROYECTO1.value:=visado.proyecto1;
tablas.VISADOSPROYECTO2.value:=visado.proyecto2;
tablas.VISADOSCODIGOCO.value:=visado.codigoco;
tablas.VISADOSPRESUPUESTO.value:=visado.presupuesto;
tablas.VISADOSGRUPO.value:=visado.grupo;
tablas.VISADOSPAGAR.value:=visado.pagar;
tablas.VISADOSIVA.value:=visado.iva;
tablas.VISADOSTOTALIVA.value:=visado.totaliva;
tablas.VISADOSPAGARIVA.value:=visado.pagariva;
tablas.VISADOSFECHA.value:=visado.fecha;
tablas.VISADOSTOTALEUROS.value:=visado.totaleuros;
tablas.VISADOSNOMBREEM.Value:=visado.nombreem;
tablas.VISADOSCIFEM.value:=visado.cifem;
tablas.VISADOSDIRECCIONEM.value:=visado.direccionem;
tablas.VISADOSPOBLACIONEM.value:=visado.poblacionem;
tablas.VISADOSNOMBRET.value:=visado.nombreet;
tablas.VISADOSCIFT.value:=visado.cift;
tablas.VISADOSDIRECCIONT.value:=visado.direcciont;
tablas.VISADOSPOBLACIONT.value:=visado.poblaciont;
tablas.VISADOSCOLEGIOCO.value:=visado.colegioco;
principal.menu1.tag:=1;
tablas.VISADOS.post;
progressbar1.Position:=progressbar1.position+round(100/cantidad);
principal.menu1.tag:=0;
end;
closefile(archivoatm);
progressbar1.Position:=100;
screen.cursor:=crdefault;
showmessage('Importacion realizada con éxito.');
principal.menu1.tag:=0;
fimportacion.close;
end
else
begin
screen.cursor:=crdefault;
showmessage('Debes de introducir una ruta.');
edit1.setfocus;
end;
end;
__________________
El saber no ocupa lugar.
|