Páginas filhas
  • FOpen

Abre um arquivo binário.
É uma função de tratamento de arquivo de baixo nível que abre um arquivo binário existente para que possa ser lido e escrito, dependendo do argumento no parâmetro <nModo>.

Sintaxe

FOpen( < cArq >, [ nModo ], [ xParam3 ], [ lChangeCase ] )

Parâmetros

Nome

Tipo

Descrição

Obrigatório

Referência

cArq

caractere

Indica o nome do arquivo que será aberto que inclui o path, caso haja um.

X


nModo

numérico

Indica o modo de acesso DOS solicitado que indicará como o arquivo aberto deve ser acessado. O acesso é uma das categorias relacionadas na tabela A e as retrições de compartilhamento estão na tabela B. O modo padrão é 0 (zero), aberto para leitura, com compartilhamento por compatibilidade. Ao definirmos o modo de acesso, deve-se somar um elemento da tabela A com a B.



xParam3

qualquer

Compatibilidade. Deve ser informado o valor nulo ( NIL )



lChangeCase

lógico

Se verdadeiro (.T.), nomes de arquivos e pastas serão convertidos para letras minúsculas; caso contrário, falso (.F.), não será feito nenhum ajuste no nome do arquivo informado. Valor padrão (.T.). Veja maiores informações em Observações.



Retorno

Nome

Tipo

Descrição

nRet

numérico

Retorna o handle de arquivo aberto, na faixa de 0 a 65.535. Caso ocorra um erro, o retorno será -1.

Observações

  • O parâmetro opcional lChangeCase foi introduzido a partir do build 7.00.131227A pois em sistemas LINUX/UNIX, existe a diferenciação entre maiúsculo e minúsculo em nomes de arquivos ou pastas. Quando este parâmetro for informado, terá prioridade sobre comportamento de Case Sensitive definido pelas chaves de ini CASESENSITIVE ou SERVERTYPE. Porem, quando não especificado o parâmetro, o valor padrão (.T.) fica condicionado ao que está configurado nessas chaves.
  • Toda vez que houver um erro na abertura do arquivo, a função FError() pode ser utilizada para retornar o código de erro do sistema operacional. Por exemplo, caso o arquivo não exista, a função FOpen() retornará -1 e FError() retornará 2 para indicar que o arquivo não foi encontrado.
  • Caso o arquivo especificado seja aberto, o valor retornado é o handle (manipulador) do sistema operacional para o arquivo. Este valor é semelhante a um alias no sistema de banco de dados e é exigido para identificar o arquivo aberto para as outras funções de tratamento de arquivo. Portanto, é importante sempre atribuir o valor que foi retornado a uma variável para uso posterior.

Atenção

Esta função permite acesso de baixo nível a arquivos e dispositivos DOS - Disk Operating System (sistema operacional de disco). Desta forma, recomenda-se muita cautela na utilização e um conhecimento detalhado do sistema operacional.

Atenção

Acessando arquivo em outros diretórios: Essa função não obedece os comandos Set Default e Set Path. Ao invés disso, FOpen() procura na configuração de diretório e path DOS, a não ser que um path seja declarado explicitamente com parte do argumento no parâmetro.

Tabela A - Modos de acesso a arquvios binários

Modo

Constante (fileio.ch)

Operação

0

FO_READ

Aberto para leitura (padrão)

1

FO_WRITE

Aberto para gravação

2

FO_READWRITE

Aberto para leitura e gravação

Tabela B - Modos de acesso de compartilhamento a arquivos binários

Modo

Constante (fileio.ch)

Operação

0

FO_COMPAT

Modo de compatibilidade (padrão).

16

FO_EXCLUSIVE

Acesso total exclusivo.

32

FO_DENYWRITE

Acesso bloqueado a gravação de outros processos ao arquivo.

48

FO_DENYREAD

Acesso bloqueado a leitura de outros processos ao arquivo.

64

FO_DENYNONE

Acesso compartilhado. Permite a leitura e gravação por outros processos ao arquivo.

64

FO_SHARED

Igual à FO_DENYNONE

Exemplos

#include 'fileio.ch'...
// Abrir o arquivo error.log para escrita e gravação compartilhada.
User Function exemplo()
  nHandle := fopen('\sigaadv\error.log' , FO_READWRITE + FO_SHARED )
  If nHandle == -1
    MsgStop('Erro de abertura : FERROR '+str(ferror(),4))
  Else
    MsgStop('Arquivo aberto com sucesso.')
    fclose(nHandle) // Fecha arquivo
  Endif
Return

Veja também

  • Sem rótulos