Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   lectura lenta de un archivo .DAT, ¿por que? (https://www.clubdelphi.com/foros/showthread.php?t=5853)

URBANO 08-12-2003 13:17:29

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;

Julià T. 08-12-2003 15:00:42

La lectura de un archivo es rapida.
La grabación en acces puede ser un poco más lenta pero no tanto

La lentitud puede estar en la línea:

fimportacion.Refresh;

URBANO 09-12-2003 20:15:30

Esa no debe ser la causa, ya que esa linea es nueva (para actualizar un objeto nuevo que habia colocado en el form). Antes de colocar esa linea seguia igual de lento al escribir.
Podría ser por alguna otra causa?

Julià T. 09-12-2003 21:07:16

la manera más simple y rápida para saberlo, marca como comentario aquellas lineas que supones que relentizan la ejecución, y alguna (o un conjunto) de ellas són las que te darán la solución.


La franja horaria es GMT +2. Ahora son las 20:12:34.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi