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

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
juniorcamilo
Usuário Nível 3
Usuário Nível 3
Mensagens: 343
Registrado em: 10 Nov 2006 09:12
Localização: Pará

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

Mensagem por juniorcamilo »

Como saber c um arquivo seje ele de qualquer tipo PRN, TXT, DBF .... c este esta aberto em outro terminal ?
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Tente abrí-lo em modo exclusivo. Se falhar, é porque ele já está aberto.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem 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
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem 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.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Ops....é vero.....
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
juniorcamilo
Usuário Nível 3
Usuário Nível 3
Mensagens: 343
Registrado em: 10 Nov 2006 09:12
Localização: Pará

Mensagem 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 :'(
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem 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.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
juniorcamilo
Usuário Nível 3
Usuário Nível 3
Mensagens: 343
Registrado em: 10 Nov 2006 09:12
Localização: Pará

Mensagem por juniorcamilo »

Obrigado Maligno vou testar.....
Avatar do usuário
juniorcamilo
Usuário Nível 3
Usuário Nível 3
Mensagens: 343
Registrado em: 10 Nov 2006 09:12
Localização: Pará

Mensagem 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.
Responder