Page 1 of 1

Leer un archivo TXT

Posted: Fri Oct 09, 2009 3:12 pm
by acuellar
Hola Todos

Estoy leyendo un archivo TXT que va creciendo.

Hago lo siguiente:

Code: Select all | Expand


PosRec:=Val( GetPvProfString( "POS","PosReg","0",cIniFile ) )
..

 fCaptu:='\\TARIFADOR\PBX\LN100809.TXT"
  If !File(fCaptu)
     MsgAlert("No hay comunicación con Servidor de Captura","Verificar")
     BREAK
   Else
     Archivo:= TTxtFile():New( fCaptu)
     Endi
..
 LeeArchivo()
..

Function LeeArchivo()
 
       Archivo:GoTo(PosRec)
        IF !Archivo:Eof()
           Cadena:=AllTrim(Archivo:ReadLine())
           PosRec++
        Else
          WritePProString( "POS", "PosReg", ltrim(str(PosRec)), cIniFile )
        Endif
Return Nil

El problema es que inicio el programa funciona perfecto. Pero cuando va de nuevo a leer ya no lee nada
Me parece que tengo que cerrar el archivo y volver a abrir antes de ir leer, hay otra manera?

Antes lo abria con FOpen() y leia con FRead() y no tenia que cerrar y abrir.

Gracias por la ayuda

Saludos

Adhemar

Re: Leer un archivo TXT

Posted: Fri Oct 09, 2009 4:29 pm
by Antonio Linares
Adhemar,

Lo puedes leer facilmente con

MemoRead( cNombreFichero ) --> cTexto

Re: Leer un archivo TXT

Posted: Fri Oct 09, 2009 6:57 pm
by acuellar
Gracias Distinguido.

El Memoread es nuevo para mi.
Cómo hago para ir a última línea que leyó para que continue?
ó
Cómo se lee?

El archivo contiene las cadena que manda la Central telefónica el cual va creciendo constantemente.

Gracias una vez mas.

Saludos

Adhemar

Re: Leer un archivo TXT

Posted: Fri Oct 09, 2009 7:31 pm
by Daniel Garcia-Gil
Hola Acuellar


Tienes la clase TTxtFile...
\samples\fivegen\brwfrms.prg
\samples\srcview.prg
\samples\testfbin.prg
\samples\testfile.prg
\samples\testxbr3.prg

Re: Leer un archivo TXT

Posted: Fri Oct 09, 2009 8:03 pm
by acuellar
Gracias, Daniel

Los revisaré.

Saludos

Adhemar

Re: Leer un archivo TXT

Posted: Fri Oct 09, 2009 9:21 pm
by Antonio Linares
Adhemar,

Cada cierto intervalo de tiempo compruebas la longitud del fichero usando por ejemplo la función Directory(), y si ha cambiado, vuelves a leerlo con MemoRead() o de las otras formas que te hemos indicado

Re: Leer un archivo TXT

Posted: Sat Oct 10, 2009 1:37 pm
by acuellar
Gracias Antonio

La idea de esto es que linea que manda la central al archivo de texto, tengo que leerla para cargarla.

Lo he logrado hacer con FRead, el problema es que leo caracter por caracter y es un poco lento. Se puede leer por línea?

Con TTxtFile(), ReadLine() puedo leer por línea, pero tengo que cerrar y abrir el archivo cada vez que aumenta y se hace lento.

Grcias una vez mas

Saludos

Adhemar

Re: Leer un archivo TXT

Posted: Sat Oct 10, 2009 1:51 pm
by Daniel Garcia-Gil
Adhemar

Cuando cierres, guardas la ultima posicion leida y cuando reabras (x tiempo) empiezas la lectura a partir de alli y puedes ir guardando lo anterior, no tienes que volver a leer todo, creo que el preceso sera mas rapido asi

Re: Leer un archivo TXT

Posted: Sat Oct 10, 2009 2:06 pm
by acuellar
Gracias Daniel.

Eso es lo que hago con FRead.

Lo que quiero es mejoralo y leerlo por linea que es mucho más rápido.

Hay ocaciones que tenemos que leer el archivo desde el principio.

Lo que no entiendo es porque no vuelve a leer desde la linea indicada con el valor de PosRec sin tener que cerrar y abrir

Code: Select all | Expand


Function LeeArchivo()
       Archivo:GoTo(PosRec)
        IF !Archivo:Eof()
           Cadena:=AllTrim(Archivo:ReadLine())
           PosRec++
        Else
          WritePProString( "POS", "PosReg", ltrim(str(PosRec)), cIniFile )
        Endif
Return Nil
 


Una vez mas agradecido por la ayuda

Saludos

Adhemar