Leer un archivo TXT

Leer un archivo TXT

Postby acuellar » Fri Oct 09, 2009 3:12 pm

Hola Todos

Estoy leyendo un archivo TXT que va creciendo.

Hago lo siguiente:
Code: Select all  Expand view

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
acuellar
 
Posts: 1643
Joined: Tue Oct 28, 2008 6:26 pm
Location: Santa Cruz-Bolivia

Re: Leer un archivo TXT

Postby Antonio Linares » Fri Oct 09, 2009 4:29 pm

Adhemar,

Lo puedes leer facilmente con

MemoRead( cNombreFichero ) --> cTexto
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42071
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Leer un archivo TXT

Postby acuellar » Fri Oct 09, 2009 6:57 pm

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
acuellar
 
Posts: 1643
Joined: Tue Oct 28, 2008 6:26 pm
Location: Santa Cruz-Bolivia

Re: Leer un archivo TXT

Postby Daniel Garcia-Gil » Fri Oct 09, 2009 7:31 pm

Hola Acuellar


Tienes la clase TTxtFile...
\samples\fivegen\brwfrms.prg
\samples\srcview.prg
\samples\testfbin.prg
\samples\testfile.prg
\samples\testxbr3.prg
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita

Re: Leer un archivo TXT

Postby acuellar » Fri Oct 09, 2009 8:03 pm

Gracias, Daniel

Los revisaré.

Saludos

Adhemar
Saludos,

Adhemar C.
User avatar
acuellar
 
Posts: 1643
Joined: Tue Oct 28, 2008 6:26 pm
Location: Santa Cruz-Bolivia

Re: Leer un archivo TXT

Postby Antonio Linares » Fri Oct 09, 2009 9:21 pm

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
Antonio Linares
Site Admin
 
Posts: 42071
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Leer un archivo TXT

Postby acuellar » Sat Oct 10, 2009 1:37 pm

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
acuellar
 
Posts: 1643
Joined: Tue Oct 28, 2008 6:26 pm
Location: Santa Cruz-Bolivia

Re: Leer un archivo TXT

Postby Daniel Garcia-Gil » Sat Oct 10, 2009 1:51 pm

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
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita

Re: Leer un archivo TXT

Postby acuellar » Sat Oct 10, 2009 2:06 pm

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 view

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.
User avatar
acuellar
 
Posts: 1643
Joined: Tue Oct 28, 2008 6:26 pm
Location: Santa Cruz-Bolivia


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 50 guests