FoxPro/Visual FoxPro - escribir en archivo txt

 
Vista:
sin imagen de perfil

escribir en archivo txt

Publicado por Juan Carlos (16 intervenciones) el 17/01/2015 07:24:02
Hola amigos de LWP queria pedirles un poco de ayuda.

Necesito guardar ciertos datos en un archivo de texto de momento lo hago asi

SELECT DETALLE
SCAN
IF FILE('c:\archivo.txt') = .T.
cArchivo2 = FOPEN('C:\archivo.txt',2)
opc = 1
ELSE
cArchivo2 = FCREATE('C:\archivo.txt',0)
opc = 2
ENDIF

strCadena = "Lo que quiero guardar, linea n"

IF opc = 1
**Es la parte que no se como hacer
ELSE
FWRITE(cArchivo2,strCadena)
ENDIF
FCLOSE(cArchivo2)

ENDSCAN

Como hacer para que si ya existe el archivo, no lo sobre escriba, sino que se agregue al final y quede algo asi:

linea 1
linea 2
linea 3

De ante mano muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 1.011
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

escribir en archivo txt

Publicado por Fidel José (558 intervenciones) el 18/01/2015 17:28:58
Para escribir al final tienes varias opciones. Las que más uso.

1) con Strtofile()
lcFile="c:\carpeta\archivo.txt"
lcCadena="Datos al final del archivo"
Strtofile( lcCadena+chr(13) , lcFile ,1)


2) con Fopen
if file(lcFile)
lnHand=fopen(lcFile,2)
else
lnHand=fcreate(lcfile)
endif
=fseek(lnHand,0,2)
=fputs(lnHand , lcCadena )
=fclose(lnHand)

Para intercalar, dependerá del tipo de archivo. Si tiene etiquetas (tags) como para identificar le punto de intercalado o utilizas un numeral. Generalmente se mete el contenido en un array y se sobreescribe todo el archivo.
lnIntercal=5
lcIntercalado = "Texto que se necesita intercalar"
local array laLines(1)
lnLines=0
lnHand = fopen(lcFile,2)
do while !feof(lnHand)
lnLines = lnLines + 1
dimension lalines(lnLines)
lalines[lnLines] = fgets(lnHand, 8192)
enddo
=fclose(lnHand)
lcString = ""
for i= 1 to lnInterCal
lcString = lcString + lalines[i] + Chr(13)
next
lcString = lcString + lcIntercalado + chr(13)
for i =lnIntercal+1 to lnLInes
lcSTring = lcString + laLines[i] + chr(13)
next
StrTofile(lcString + chr(13) , lcFile, 0 )
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar