Histórico da Página
Incluir Página | ||||
---|---|---|---|---|
|
Sintaxe
FREAD( <expressão numérica 1>, @<variável caracter>, <expressão numérica 2> )
Propósito
Lê caracteres de um arquivo binário, armazenando-os numa variável de memória tipo caracter e fornecendo o número de bytes lidos.
Argumentos
< expressão numérica 1>
Define o número de manipulação que identifica o arquivo a ser lido. Este número é obtido pelas funções FOPEN() ou FCREATE().
< variável caracter>
Define o nome de uma variável caracter existente e iniciada, passada por referência através do prefixo @, para ser utilizada como um buffer de leitura. O tamanho desta variável deve ser, no mínimo, o mesmo definido pela expressão numérica 2. Cada caracter lido a partir do arquivo especificado será armazenado nesta variável.
< expressão numérica 2>
Define o número de bytes a serem lidos e armazenados no buffer, iniciando-se da localização atual do ponteiro de arquivos. O valor fornecido pela função FREAD(), quando a operação de leitura for bem sucedida, deve ser igual ao valor da expressão numérica 2. Um valor menor ou zero indica que foi encontrado o fim do arquivo ou que ocorreu algum erro de leitura.
Utilização
Qualquer tipo de caracter contido no arquivo é lido por FREAD(), incluindo caracteres de controle, o caracter nulo (“”) ou caracteres com código ASCII acima de CHR(127).
Para reposicionar o ponteiro de arquivos binários sem fazer uma leitura, deve-se utilizar a função FSEEK().
Dicas
As funções FREADSTR() e FSEEK() tem relação com a função FREAD(). A função FREADSTR() lê um determinado número de bytes de um arquivo binário até que seja encontrado o caracter CHR(0). A função FSEEK() apenas move o apontador de arquivo, não efetuando nenhuma leitura.
Sempre que ocorrer um erro de leitura de arquivo, a função FREAD() fornecerá o valor 0. Neste caso, a função FERROR() poderá ser utilizada para determinar o tipo de erro ocorrido. Por exemplo, se FREAD() fornecer o valor zero e FERROR() fornecer o valor 6, significará que o número especificado para identificar o arquivo é inválido. Consulte a função FERROR() para verificar a lista de erros.
Exemplos
O exemplo abaixo lê um bloco de caracteres com 128 bytes do arquivo Teste.txt.
LOCAL nBloco := 128
LOCAL cBuffer := SPACE(512)
LOCAL cArq := FOPEN(“Teste.txt”) // Abre o arquivo binário
LOCAL nBytes := 0
IF FERROR <> 0
MsgAlert(“Erro no acesso ao arquivo nº “ + STR(FERROR()))
RETURN
ELSE
nBytes := FREAD(cArq, @cBuffer, nBloco) // Lê os bytes
IF nBytes <> nBloco
MsgAlert(“Erro de leitura nº “ + STR(FERROR()))
RETURN
ELSE
MsgAlert(nBytes) // Mostra os bytes lidos
ENDIF
ENDIF