Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Busqueda en un archivo texto (https://www.clubdelphi.com/foros/showthread.php?t=20423)

Ing_Fajardo 14-04-2005 23:40:19

Busqueda en un archivo texto
 
Holasss

Tengo un archivo texto, lo leo linea a linea.

No tengo problemas en abrirlo, cerrarlo, leer linea por linea etc.

Para esto uso Delphi 7 y las siguientes instrucciones:

----------- CODIGO -----------
var
F: Textfile;
str1: string;
BEGIN

sArchivoDeDatos := trim(efc_archivodedatos.FileName);

AssignFile(f, sArchivoDeDatos); {Paso el nombre del archivo}
Reset(f); {Lectura}
Readln(f, str1);

END;

Mi programa lee grupos de 6 lineas, los datos numericos se promedian y de este promedio se crea un punto en una grafica XY.

OTRO programa externo guarda datos en el archivo texto.
Entonces, si yo leo 6 lineas del archivo de texto y las promedio, que pasa cuando llego al final ? o cuando solo quedan 4 lineas por leer? Pues me espero, tengo un reloj de 6mins.

Asi, si detecto que no pude leer 6 lineas, no saco promedio ni grafico y espero otros 6 minutos.... asi hasta que pueda leer 6 lineas.

PERO (siempre hay un pero) si no logro leer las 6 lineas, tengo que regresarme a la ultima linea leida.

Para esto uso un contador de lineas, tampoco hay problema, el problema es que al querer usar SEEK para regresar a una linea me encuento con:

-----------------------
Delphi syntax:
procedure Seek(var F; N: Longint);
---------------------------------

o sea que usaria
Seek( F, liLinea);

donde liLinea es un Longint pero F, mi variable de archivo NO ES LONGINT, sino es tipo TEXTFILE y no puedo usar SEEK.

He leido los ejemplos de la ayuda en delphi, pero en NINGUNO viene SEEK usando una variable TEXTFILE, sino de ' file of Byte ' , que no es lo que quiero.

En los ejemplos de readln, writeln, reset etc se una una variable de tipo TEXTFILE, no LONGINT.

ALGUIEN podria decirme como usar SEEK o una funcion similar cuando uso un archivo de texto con una variable TEXTFILE???

O de plano uso TStringList con su loadfromfile etc..etc.. ??

jachguate 15-04-2005 01:23:23

Los archivos de texto son de acceso secuencial, y seek solamente puede usarse con archivos de acceso aleatorio (file of byte, file of integer, file of Registro, etc).

Esto no es una limitación de delphi, sino del sistema operativo y se debe a que en un archivo de texto el tamaño de las líneas es variable. si ya tenes un contador de líneas, dejalo como está... no vas a agregar ninguna optimización con usar TStringList.

Hasta luego.

;)

Ing_Fajardo 15-04-2005 04:54:21

Cita:

Empezado por jachguate
dejalo como está... no vas a agregar ninguna optimización con usar TStringList.

Hasta luego.

;)

Necesito buscar una linea, o regresar de 1 a 5 lineas, asi que voy a tener que usar el TStringList, o hay otra solucion?

------------- EDIT ---------------------
Solucionado, con el uso del tstringlist.loadfromfile.


Saludos.


La franja horaria es GMT +2. Ahora son las 07:51:19.

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