FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
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. |
#2
|
|||
|
|||
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; |
#3
|
|||
|
|||
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. |
#4
|
|||
|
|||
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.
|
|
|
|