Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-04-2005
Ing_Fajardo Ing_Fajardo is offline
Miembro
 
Registrado: abr 2005
Ubicación: Mexico
Posts: 46
Poder: 0
Ing_Fajardo Va por buen camino
Question 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.. ??

Última edición por Ing_Fajardo fecha: 14-04-2005 a las 23:45:43.
Responder Con Cita
  #2  
Antiguo 15-04-2005
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
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.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #3  
Antiguo 15-04-2005
Ing_Fajardo Ing_Fajardo is offline
Miembro
 
Registrado: abr 2005
Ubicación: Mexico
Posts: 46
Poder: 0
Ing_Fajardo Va por buen camino
Unhappy

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.

Última edición por Ing_Fajardo fecha: 20-04-2005 a las 00:50:40.
Responder Con Cita
Respuesta



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 02:15:41.


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