Leer un archivo TXT

Post Reply
User avatar
acuellar
Posts: 1645
Joined: Tue Oct 28, 2008 6:26 pm
Location: Santa Cruz-Bolivia

Leer un archivo TXT

Post 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
Saludos,

Adhemar C.
User avatar
Antonio Linares
Site Admin
Posts: 42529
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Has thanked: 31 times
Been thanked: 77 times
Contact:

Re: Leer un archivo TXT

Post by Antonio Linares »

Adhemar,

Lo puedes leer facilmente con

MemoRead( cNombreFichero ) --> cTexto
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
acuellar
Posts: 1645
Joined: Tue Oct 28, 2008 6:26 pm
Location: Santa Cruz-Bolivia

Re: Leer un archivo TXT

Post 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
Saludos,

Adhemar C.
User avatar
Daniel Garcia-Gil
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita
Contact:

Re: Leer un archivo TXT

Post 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
our best documentation is the source code
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
User avatar
acuellar
Posts: 1645
Joined: Tue Oct 28, 2008 6:26 pm
Location: Santa Cruz-Bolivia

Re: Leer un archivo TXT

Post by acuellar »

Gracias, Daniel

Los revisaré.

Saludos

Adhemar
Saludos,

Adhemar C.
User avatar
Antonio Linares
Site Admin
Posts: 42529
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Has thanked: 31 times
Been thanked: 77 times
Contact:

Re: Leer un archivo TXT

Post 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
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
acuellar
Posts: 1645
Joined: Tue Oct 28, 2008 6:26 pm
Location: Santa Cruz-Bolivia

Re: Leer un archivo TXT

Post 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
Saludos,

Adhemar C.
User avatar
Daniel Garcia-Gil
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita
Contact:

Re: Leer un archivo TXT

Post 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
our best documentation is the source code
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
User avatar
acuellar
Posts: 1645
Joined: Tue Oct 28, 2008 6:26 pm
Location: Santa Cruz-Bolivia

Re: Leer un archivo TXT

Post 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
Saludos,

Adhemar C.
Post Reply