No se llena pero tiene un tamaño máximo, guarda lo mas nuevo
**********************************************************************
*
* Funcion: LOG_GRAB
*
* Graba una linea en el log (en raizLOG.TXT)
*
* Parametros:
*
* tcTexto - texto a grabar
*
* Ejemplos:
*
* ret = LOG_GRAB("Inicio de Programa")
*
* Retorno:
*
* .T. Grabacion correcta
* .F. Error en la grabacion
*
* Nota:
*
**********************************************************************
FUNCTION LOG_GRAB
PARAMETERS tcTexto
LOCAL plRet, pnFich, pnFichn, pnFtama, pnTammax, pnLongAc
LOCAL pcChar, pnPos
plRet = .T.
pnLongAc = 0
pnTammax = 30000 && tamaño maximo
pnFtama = 0
IF FILE(SYS(5)+SYS(2003)+'log.txt') && ¿Existe el archivo?
pnFich = FOPEN(SYS(5)+SYS(2003)+'log.txt',12) && Sí: abrir lect./escrit.
pnFtama=FSEEK(pnFich, 0, 2) && Mueve el puntero a EOF
&& y devuelve el tamaño
ELSE
pnFich = FCREATE(SYS(5)+SYS(2003)+'log.txt') && Si no, crearlo
ENDIF
IF pnFich < 0 && Comprobar el error
&& abriendo el archivo
plRet = .F.
WAIT 'No puedo abrir o crear el archivo de salida (fich)' WINDOW NOWAIT
ELSE && Si no hay error,
&& escribir en el archivo
IF pnFtama > pnTammax && Si el tamaño es mayor que el max
pnFichn = FCREATE(SYS(5)+SYS(2003)+'logn.txt') && Crear nuevo log
IF pnFichn < 0
WAIT 'No puedo abrir o crear el archivo de salida (fichn)' WINDOW NOWAIT
ELSE
pnPos = FSEEK(pnFich, -(pnTammax - 256), 1)
pcChar = FREAD(pnFich, 1)
DO WHILE pcChar <> CHR(10)
pcChar = FREAD(pnFich, 1)
ENDDO
pnPos = FSEEK(pnFich, 0, 1)
DO WHILE NOT(FEOF(pnFich))
= FPUTS(pnFichn,FGETS(pnFich))
ENDDO
=FCLOSE(pnFich)
=FCLOSE(pnFichn)
DELETE FILE SYS(5)+SYS(2003)+'log.txt'
RENAME SYS(5)+SYS(2003)+'logn.txt' TO SYS(5)+SYS(2003)+'log.txt'
pnFich = FOPEN(SYS(5)+SYS(2003)+'log.txt',12)
pnFtama=FSEEK(pnFich, 0, 2)
ENDIF
ENDIF
=FWRITE(pnFich, DTOC(DATE())+CHR(9))
=FWRITE(pnFich, TIME()+CHR(9))
=FWRITE(pnFich, tcTexto+CHR(13)+CHR(10))
ENDIF
=FCLOSE(pnFich) && Cerrar archivo
RETURN plRet
Pablo Roca
No hay comentarios.:
Publicar un comentario
Los comentarios son moderados, por lo que pueden demorar varias horas para su publicación.