Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

Incluir Página
tec:FWrite
tec:FWrite

 

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