FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Leer un archivo TXT
Posts: 1710
Joined: Tue Oct 28, 2008 06:26 PM
Leer un archivo TXT
Posted: Fri Oct 09, 2009 03:12 PM
Hola Todos

Estoy leyendo un archivo TXT que va creciendo.

Hago lo siguiente:
Code (fw): Select all Collapse
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.
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Leer un archivo TXT
Posted: Fri Oct 09, 2009 04:29 PM

Adhemar,

Lo puedes leer facilmente con

MemoRead( cNombreFichero ) --> cTexto

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1710
Joined: Tue Oct 28, 2008 06:26 PM
Re: Leer un archivo TXT
Posted: Fri Oct 09, 2009 06: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.
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 PM
Re: Leer un archivo TXT
Posted: Fri Oct 09, 2009 07:31 PM

Hola Acuellar

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

Posts: 1710
Joined: Tue Oct 28, 2008 06:26 PM
Re: Leer un archivo TXT
Posted: Fri Oct 09, 2009 08:03 PM

Gracias, Daniel

Los revisar茅.

Saludos

Adhemar

Saludos,



Adhemar C.
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Leer un archivo TXT
Posted: Fri Oct 09, 2009 09: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
Posts: 1710
Joined: Tue Oct 28, 2008 06:26 PM
Re: Leer un archivo TXT
Posted: Sat Oct 10, 2009 01: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.
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 PM
Re: Leer un archivo TXT
Posted: Sat Oct 10, 2009 01: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

Posts: 1710
Joined: Tue Oct 28, 2008 06:26 PM
Re: Leer un archivo TXT
Posted: Sat Oct 10, 2009 02: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 (fw): Select all Collapse
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.

Continue the discussion