Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Composition Setup
import.css=/download/attachments/327912/newLayout.css

...

...

Pagetitle
FWrite

FWrite

Escreve

...

dados

...

de

...

um

...

buffer

...

de

...

string

...

em

...

um

...

arquivo

...

binário.

...

Para

...

isso,

...

pode-se

...

escrever

...

todo

...

ou

...

parte

...

do

...

conteúdo

...

do

...

buffer,

...

limitando

...

a

...

quantidade

...

de

...

bytes.

 

Sintaxe

Bloco de código
collapsefalse
FWrite( <

...

 nHandle >, <

...

 cBuffer >, [ nQtdBytes ] )

...


Parâmetros

...

Nome

Tipo

Descrição

Obrigatório

Referência

nHandle

...

numérico

Indica o manipulador de arquivo obtido através das funções FCreate() e FOpen().

X

 

cBuffer

...

caractere

Indica a string que será escrita no arquivo especificado. O tamanho desta variável deve ser maior ou igual ao tamanho informado no parâmetro (caso seja informado o tamanho).

X

 

nQtdBytes

...

numérico

Indica a quantidade de bytes que serão escritos a partir da posição atual do ponteiro de arquivos. Caso não seja informado, todo o conteúdo do parâmetro é escrito.

 

 

 

Retorno

Nome

Tipo

Descrição

...

nRet

...

numérico

Retorna a quantidade de bytes escritos na forma de um valor numérico inteiro. Caso o valor seja igual ao parâmetro <nQtdBytes>, a operação foi realizada com sucesso; caso contrário, se o valor for menor ou zero, o disco rígido está cheio ou ocorreu erro.

Observações

  • A escrita começa a partir da

...

  • posição atual do ponteiro de arquivos e a função retorna a quantidade real de bytes escritos.
  • Através das funções FOpen()

...

  • e FCreate(), pode-se abrir ou criar um arquivo, abrir uma porta de comunicação para gravar ou enviar os dados do buffer informado.
  • Essa função suporta na string, do parâmetro , todos os caracteres da tabela ASCII, inclusive caracteres de controle (ASC 0, ASC 12, ASC 128, etc.).
  • A gravação no arquivo é realizada a partir da posição atual do ponteiro, mas pode ser ajustado através das funções FSeek(), FRead() ou FReadStr().
  • Se o retorno da

...

  • função for menor que o parâmetro ou zero, o disco rígido está cheio ou ocorreu erro. Neste caso, utilize a função FError() para obter mais detalhes.

Exemplos

...

Bloco de código
languagecpp
themeEclipse
firstline1
titleExemplo 1
linenumberstrue
#include

...

 "fileio.ch"

...



user function exemplo1()

  // Abre o arquivo
 

...

 nHandle := fopen('c:\garbage\teste.txt' , FO_READWRITE + FO_SHARED )
  If nHandle == -1
    

...

MsgStop('Erro de abertura : FERROR '+str(ferror(),4))

...


  Else
    FSeek(nHandle, 0, FS_END)         // Posiciona no fim do arquivo
    FWrite(nHandle, "Nova Linha", 10) // Insere texto no arquivo
    fclose(nHandle)                   // Fecha arquivo
    MsgAlert('Processo concluído')

...


  Endif

return



Bloco de código
languagecpp
themeEclipse
firstline1
titleExemplo 2
linenumberstrue
#INCLUDE "FILEIO.CH"

//Este exemplo realiza uma cópia de um arquivo Texto chamado ORIGEM.TXT, 
//para um arquivo chamado DESTINO.TXT, no ambiente do Servidor de Aplicação.

...



#DEFINE F_BLOCK 1024

...

    // Define o bloco de Bytes a serem lidos / gravados por 

...

vez

user function TestCopy()

  Local cBuffer := SPACE(F_BLOCK)
  Local nHOrigem

...

, nHDestino
  Local nBytesLidos, nBytesFalta, nTamArquivo
  

...

Local nBytesLer

...

, nBytesSalvoLocal
  lCopiaOk := .T.
  // Abre o arquivo de 

...

Origem
  nHOrigem := FOPEN("ORIGEM.TXT", FO_READ)
  // Testa a abertura do Arquivo
 

...

 If nHOrigem == -1

...


    MsgStop('Erro

...

 

...

ao abrir origem. Ferror = '+str(ferror(),4),'Erro')

...


    Return .F.
  Endif
  // Determina o tamanho do arquivo de origem
  nTamArquivo 

...

:= Fseek(nHOrigem,0,2)
  // Move o ponteiro do arquivo de origem para o inicio do arquivo
  

...

Fseek(nHOrigem,0)
  // Cria o arquivo de 

...

destino
  nHDestino := FCREATE("DESTINO.TXT", FC_NORMAL)
  // Testa a criação do arquivo de destino
 

...

 If nHDestino == -1

...


    MsgStop('Erro ao criar destino.

...

 

...

Ferror = '+str(ferror(),4),'Erro')

...


    FCLOSE(nHOrigem)

...

  // Fecha o arquivo de Origem

...


    Return .F.
  Endif
  // Define que a quantidade que falta copiar é o próprio tamanho do Arquivo
  

...

nBytesFalta := nTamArquivo
  // Enquanto houver dados a serem copiados
  

...

While nBytesFalta > 0

...


    // Determina quantidade de dados a serem lidos
   

...

 

...

nBytesLer 

...

:= Min(nBytesFalta

...

, F_BLOCK )

...


    // lê os dados do Arquivo

...


    

...

nBytesLidos := FREAD(nHOrigem, @cBuffer, nBytesLer )

...


    // Determina se não houve falha na leitura
 

...

   If nBytesLidos < nBytesLer
     

...

 

...

MsgStop(

...

"Erro de Leitura da Origem. "

...

 + Str(nBytesLer,8,2) +;
      " bytes a LER."

...

 + Str(nBytesLidos,8,2) + " bytes Lidos."

...

 + "Ferror = " + str(ferror(),4),'Erro')

...


      lCopiaOk := .F.

...


      Exit
    Endif
    // Salva os dados lidos no arquivo de destino

...


    nBytesSalvo := FWRITE(nHDestino, cBuffer,nBytesLer)
    

...

// Determina se não houve falha na gravação

...


    If nBytesSalvo < nBytesLer
     

...

 MsgStop("Erro de gravação do Destino. "

...

 + Str(nBytesLer,8,2) +

...

;
 

...

     " bytes a SALVAR."

...

 + Str(nBytesSalvo,8,2) + " bytes gravados."

...

 + "Ferror = " + str(ferror(),4),'Erro')

...


      lCopiaOk := .F.

...


      EXIT
    Endif
    // Elimina do Total do Arquivo a quantidade de bytes copiados

...


    nBytesFalta -=

...

 nBytesLer
  Enddo
  // Fecha os arquivos de origem e 

...

destino
  FCLOSE(nHOrigem)
  FCLOSE(nHDestino)
  If lCopiaOk

...


    MsgStop('Cópia de Arquivos finalizada com sucesso. ' +

...

 str(nTamArquivo,12,0) + '

...

 

...

bytes copiados.','Final')

...


  Else
    MsgStop(

...

'Falha na Cópia. Arquivo de Destino incompleto. ' +;

...


    'Do 

...

total de ' + str(nTamArquivo,12,0) + ' bytes, faltaram ' + str(nBytesFalta,12,0)+' bytes.','Final')

...

Advanced Protheus 6.09 , Advanced Protheus 7.10 , Microsiga Protheus 8.11 , Protheus 10 , TOTVS Application Server 10 , ByYou Application Server

...


  Endif

return

Veja também