Escribir en un TXT existente usando API de windows
Publicado: Mar Sep 26, 2017 4:47 pm
Hola Gente!
Siempre que he necesitado escribir en archivos de texto, uso las API de windows, declaradas en el MAP:
MODULE('Windows API')
_lopen(*CSTRING,SIGNED),SIGNED,PASCAL,RAW
_lread(SIGNED, *CSTRING, SIGNED),SIGNED,PASCAL,RAW
_lcreat(*CSTRING,SIGNED),SIGNED,PASCAL,RAW
_hwrite(SIGNED,*CSTRING,LONG),LONG,PASCAL,RAW
_lclose(SIGNED),SIGNED,PASCAL
END
Hasta ahora la secuencia usada siempre ha sido:
F# = _lcreat(NombreArchivo,0)
X# = _hwrite(F#,Texto,LEN(Texto))
X# = _lclose(F#)
Pero el _lcreat CREA el archivo de cero como su nombre lo indica, sin importar si el mismo tiene o no contenido.
Lo que necesito hacer es verificar si el archivo existe (esto lo hago con el IF EXISTS) y en caso de que ya esté creado agregarle más lineas. Eso no sería un problema si en lugar de F# uso una variable global al crearlo que usaré luego al escribir... pero si cierro el programa, al abrirlo nuevamente pierdo el dato.
He añadido las funciones _lopen y _lread que nunca antes había usado y encontré en algún tutorial web pero no me funcionan:
F# = _lopen(NombreArchivo,0)
Texto='estoy intentando escribir en el archivo abierto'
X# = _hwrite(F#,Texto,LEN(Texto))
pero no escribe nada... gracias por cualquier ayuda! Ileana
Siempre que he necesitado escribir en archivos de texto, uso las API de windows, declaradas en el MAP:
MODULE('Windows API')
_lopen(*CSTRING,SIGNED),SIGNED,PASCAL,RAW
_lread(SIGNED, *CSTRING, SIGNED),SIGNED,PASCAL,RAW
_lcreat(*CSTRING,SIGNED),SIGNED,PASCAL,RAW
_hwrite(SIGNED,*CSTRING,LONG),LONG,PASCAL,RAW
_lclose(SIGNED),SIGNED,PASCAL
END
Hasta ahora la secuencia usada siempre ha sido:
F# = _lcreat(NombreArchivo,0)
X# = _hwrite(F#,Texto,LEN(Texto))
X# = _lclose(F#)
Pero el _lcreat CREA el archivo de cero como su nombre lo indica, sin importar si el mismo tiene o no contenido.
Lo que necesito hacer es verificar si el archivo existe (esto lo hago con el IF EXISTS) y en caso de que ya esté creado agregarle más lineas. Eso no sería un problema si en lugar de F# uso una variable global al crearlo que usaré luego al escribir... pero si cierro el programa, al abrirlo nuevamente pierdo el dato.
He añadido las funciones _lopen y _lread que nunca antes había usado y encontré en algún tutorial web pero no me funcionan:
F# = _lopen(NombreArchivo,0)
Texto='estoy intentando escribir en el archivo abierto'
X# = _hwrite(F#,Texto,LEN(Texto))
pero no escribe nada... gracias por cualquier ayuda! Ileana