Árvore de páginas

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

  • Sem rótulos