Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-12-2003
URBANO URBANO is offline
Miembro
 
Registrado: jul 2003
Ubicación: Huelva
Posts: 126
Poder: 21
URBANO Va por buen camino
Question 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.
Responder Con Cita
  #2  
Antiguo 08-12-2003
Julià T. Julià T. is offline
Miembro
 
Registrado: may 2003
Ubicación: en el teclado
Posts: 314
Poder: 21
Julià T. Va por buen camino
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;
Responder Con Cita
  #3  
Antiguo 09-12-2003
URBANO URBANO is offline
Miembro
 
Registrado: jul 2003
Ubicación: Huelva
Posts: 126
Poder: 21
URBANO Va por buen camino
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?
__________________
El saber no ocupa lugar.
Responder Con Cita
  #4  
Antiguo 09-12-2003
Julià T. Julià T. is offline
Miembro
 
Registrado: may 2003
Ubicación: en el teclado
Posts: 314
Poder: 21
Julià T. Va por buen camino
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.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 15:42:11.


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
Copyright 1996-2007 Club Delphi