Histórico da Página
Sintaxis
FWRITE( <expresión numérica 1>, <variable carácter> [ , <expresión numérica 2> ] )
Propósito
Graba el contenido de una variable buffer en un archivo binario, suministrando la cantidad de bytes grabados por medio de un valor numérico entero.
Argumentos
< expresión numérica 1 >
Define el número de manejo que identifica el archivo binario que se procesará. Este número se obtiene por las funciones FOPEN() o FCREATE().
< variable carácter>
Define el nombre de una variable de memoria tipo carácter, existente, que se utilizará como un buffer para los datos que se grabarán en el archivo especificado.
< expresión numérica 2 >
Define el número de bytes que se grabarán de la variable carácter de buffer en el archivo especificado, a partir de la posición actual del puntero de archivos binarios. Si no se especifica este argumento, todo el contenido de la variable de buffer se grabará en el archivo.
Utilización
La función FWRITE() graba caracteres en un archivo binario a partir de una variable utilizada como buffer, suministrando la cantidad de bytes grabados. Si el valor suministrado es cero o menor que el resultado de la expresión numérica 2, indicará que ocurrió algún error durante la operación de grabación. Este error podrá determinarse por la función FERROR(), que suministra el código de error correspondiente a los errores ocurridos durante el manejo de archivos binarios.
La grabación siempre se inicia a partir de la posición actual del puntero de archivos binarios, y la función FWRITE() siempre suministra la cantidad de bytes grabados. Cuando la grabación tiene éxito, el valor suministrado por la función FWRITE() debe ser igual al valor de la expresión numérica 2.
Ejemplos
Este ejemplo copia el contenido de un archivo a otro:
#include "Fileio.ch"
#define F_BLOCK 512
LOCAL cBuffer := SPACE(F_BLOCK)
LOCAL nInfile := FOPEN("Temp.txt", FO_READ)
LOCAL nOutfile := FCREATE("Newfile.txt", FC_NORMAL)
LOCAL lDone := .F.
LOCAL nBytesR := 0
WHILE !lDone
nBytesR := FREAD(nInfile, @cBuffer, F_BLOCK)
IF FWRITE(nOutfile, cBuffer, nBytesR) < nBytesR
MsgAlert("Error de grabación: " + STR(FERROR()))
lDone := .T.
ELSE
lDone := (nBytesRead == 0)
ENDIF
ENDDO
FCLOSE(nInfile)
FCLOSE(nOutfile)
RETURN NIL