Histórico da Página
Incluir Página | ||||
---|---|---|---|---|
|
Sintaxe
FWRITE( <expressão numérica 1>, <variável caracter> [ , <expressão numérica 2> ] )
Propósito
Grava o conteúdo de uma variável buffer em um arquivo binário, fornecendo a quantidade de bytes gravados através de um valor numérico inteiro.
Argumentos
< expressão numérica 1>
Define o número de manipulação que identifica o arquivo binário a ser processado. Esse número é obtido pelas funções FOPEN() ou FCREATE().
< variável caracter>
Define o nome de uma variável de memória tipo caracter, já existente, a ser utilizada como um buffer para os dados a serem gravados no arquivo especificado.
< expressão numérica 2>
Define o número de bytes a serem gravados da variável caracter de buffer no arquivo especificado, a partir da posição atual do ponteiro de arquivos binários. Se este argumento não for especificado, todo o conteúdo da variável de buffer será gravado no arquivo.
Utilização
A função FWRITE() grava caracteres em um arquivo binário a partir de uma variável utilizada como buffer, fornecendo a quantidade de bytes gravados. Se o valor fornecido for zero ou menor que o resultado da expressão numérica 2, indicará que ocorreu algum erro durante a operação de gravação. Este erro poderá ser determinado pela função FERROR(), que fornece o código de erro correspondente aos erros ocorridos durante a manipulação de arquivos binários.
A gravação sempre inicia-se da posição atual do ponteiro de arquivos binários, e a função FWRITE() sempre fornece a quantidade de bytes gravados. Quando a gravação é bem sucedida, o valor fornecido pela função FWRITE() deverá ser igual ao valor da expressão numérica 2.
Exemplos
Este exemplo copia o conteúdo de um arquivo para outro:
#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("Erro de gravação: " + STR(FERROR()))
lDone := .T.
ELSE
lDone := (nBytesRead == 0)
ENDIF
ENDDO
FCLOSE(nInfile)
FCLOSE(nOutfile)
RETURN NIL