Página 1 de 1

Como fazer para saber c um arquivo esta aberto ou nao?

Enviado: 20 Ago 2007 09:31
por juniorcamilo
Como saber c um arquivo seje ele de qualquer tipo PRN, TXT, DBF .... c este esta aberto em outro terminal ?

Enviado: 20 Ago 2007 09:33
por Maligno
Tente abrí-lo em modo exclusivo. Se falhar, é porque ele já está aberto.

Enviado: 20 Ago 2007 10:02
por sygecom
IF USED("MEUDBF") // Resulta: .T.
@ 10,10 SAY "EM USO "
ENDIF
Obs: esse exemplo não é para outro terminal, e sim na mesma area corente

Abraços
Leonardo Machado

Enviado: 20 Ago 2007 10:07
por Maligno
IF USED("MEUDBF")
Isso não funciona com arquivos texto. Daí, acho mais interessante criar uma função genérica que abra (FOpen) arquivos de qualquer extensão no modo exclusivo. Funcionaria pra qualquer arquivo.

Enviado: 20 Ago 2007 10:11
por sygecom
Ops....é vero.....

Enviado: 20 Ago 2007 10:26
por juniorcamilo
Maligno escreveu:
IF USED("MEUDBF")
Isso não funciona com arquivos texto. Daí, acho mais interessante criar uma função genérica que abra (FOpen) arquivos de qualquer extensão no modo exclusivo. Funcionaria pra qualquer arquivo.
nao consegui com o fopen???? :(Neg não sei como fazer :'(

Enviado: 20 Ago 2007 10:32
por Maligno
Exemplo simples:

Código: Selecionar todos

if (nHandle := Fopen("ARQUIVO",16)) != -1
   // Abriu.
   // Então o arquivo está liberado.
   FClose(nHandle)
else
   // Não abriu.
   // Deve estar em uso.
   // Ou você errou o nome do arquivo.
end
Leia o NG para saber mais sobre os códigos dos modos de abertura. Usei o 16 (FO_EXCLUSIVE), que é para abertura em modo exclusivo.

Enviado: 20 Ago 2007 11:00
por juniorcamilo
Obrigado Maligno vou testar.....

Enviado: 21 Ago 2007 07:43
por juniorcamilo
Testei e Funcionou é isso ai.... Obrigado Maligno,,,, Valeuuu
Maligno escreveu:Exemplo simples:

Código: Selecionar todos

if (nHandle := Fopen("ARQUIVO",16)) != -1
   // Abriu.
   // Então o arquivo está liberado.
   FClose(nHandle)
else
   // Não abriu.
   // Deve estar em uso.
   // Ou você errou o nome do arquivo.
end
Leia o NG para saber mais sobre os códigos dos modos de abertura. Usei o 16 (FO_EXCLUSIVE), que é para abertura em modo exclusivo.