identificar se um arquivo está aberto

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
acelconsultoria
Usuário Nível 3
Usuário Nível 3
Mensagens: 231
Registrado em: 10 Jan 2006 17:05
Localização: Itápolis-SP

O problema continua...

Mensagem por acelconsultoria »

Olá amigos do forum !!!


Eu andei pesquisando por aqui e não encontrei nenhuma postagem que comentasse sobre a falha do comando NETERR() na versão 5.3a do clipper.

Sei que a maioria dos colegas daqui do forum estranhou, pois a sintaxe do comando NETERR() que o amigo Piter Galdiano postou está correta, e mesmo assim apresentava falhas, devido ao BUG existente.

O que acontece na verdade é que, quando se está com um arquivo aberto em modo SHARED, e tenta-se abrir o mesmo arquivo em outra estação em modo EXCLUSIVE, ou o inverso disso, o teste NETERR() é ignorado e aparece o ALERT de erro do clipper: "DOS Error 5", quando na verdade, o programa deveria retornar FALSE, para que o usuário aguarde a liberação do arquivo para poder usá-lo.

Inclusive, na própria documentação dos Patches do Clipper 5.3b, o tal erro é mencionado.

Se pegarmos uma simples rotina e rodá-la em duas estações, como por exemplo:

Código: Selecionar todos

   
   @ 05, 00 CLEAR TO 20, 79
   @ 05, 00 SAY "ABRIR EM <E> OU <C> ?"
   @ 06, 00 GET WOPC PICT "!" VALID WOPC $ "EC"
   READ

   IF WOPC = "E"
      SELE 1
      USE TESTE EXCLUSIVE NEW
   ELSE
      SELE 2
      USE TESTE SHARED NEW
   ENDIF

   IF NETERR()
      TONE(800,2)
      @ 10, 00 SAY "ERRO, ABRINDO: TESTE.DBF" 
   ELSE
      @ 10, 10 SAY "ARQUIVO ABERTO: TESTE.DBF"
   ENDIF
   INKEY(0)

RETURN .T.

Compilando essa rotina com o clipper 5.3, a função NETERR() funciona e retorna o erro, para que o sistema aguarde a liberação do arquivo. Com a versão 5.3a, o sistema dá erro.

Porém, na versão 5.3b, a documentação informa que o problema foi resolvido. Mas, como sempre existem as excessões, a versão 5.3b que eu possuo apresenta o mesmo problema.

Procurei pelos links disponíveis para download da versão 5.3b aqui no forum e baixei-as. Nenhuma funcionou.

Então, a solução foi apelar para uma outra solução, que é o exemplo que o Rochinha postou neste tópico.

Mas, em todo caso, se alguém possuir esse Patch da versão 5.3b que funcione corretamente e puder me enviar por e-mail ou disponibilizar um link aqui no forum, eu agradeço.

Abraços a todos !!!

Maickon Sato
Adm. Maickon Sato
Consultoria e Projetos
-------------------------------------------------------
Avatar do usuário
acelconsultoria
Usuário Nível 3
Usuário Nível 3
Mensagens: 231
Registrado em: 10 Jan 2006 17:05
Localização: Itápolis-SP

Deu certo, agora !!!

Mensagem por acelconsultoria »

Realmente, os patches que eu havia baixado, estavam com algum problema. Mesmo seguindo toda a "regra" de instalação, instalando primeiro o clipper 5.3, os patches do 5.3a e, finalmente, o patch do 5.3b, os problemas com a função NETERR() ainda continuaram.

Mas achei esse link aqui, no site PUXAKI.

http://www.puxaki.com.br/procurar.php?i ... &powered=0

É só baixar o arquivo "Clipper53b.rar", descompactá-lo todo na pasta do clipper e recompilar. Problema resolvido !!!

Abraços a todos !!!
Adm. Maickon Sato
Consultoria e Projetos
-------------------------------------------------------
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Mensagem por Pablo César »

Puxa Maickon ! Você levantou um tema que pelo que eu vejo não tinha sido percebido antes para aqueles que usam a versão 5.3 do Clipper. Eu não cheguei testar, mas devo agradecer e parabenizá-lo pelo seu empenho e indicação. Vou ataulizar o meu Clipper 5.3 e reportarei qualquer observação que mereça atenção. Valeu !
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar do usuário
acelconsultoria
Usuário Nível 3
Usuário Nível 3
Mensagens: 231
Registrado em: 10 Jan 2006 17:05
Localização: Itápolis-SP

Realmente...

Mensagem por acelconsultoria »

Obrigado !!! Procuro sempre contribuir na medida do possível, já que tenho bem menos experiência em relação a maioria dos membros desse forum.

Mas é isso aí, Pablo. Percebi que, de uma forma muito estranha, em determinadas situações, meu sistema provocava alguma falha, mas que tava muito difícil de adivinhar. Foi quando suspeitei da função NETERR() e criei um programa a parte, só pra testá-la.

Aí juntei todas as versões do clipper e do xHarbour que tenho e vi que em todas funcionaram, menos na 5.3a.

Apesar da dica do Rochinha ajudar bastante, não resolve 100% do problema, já que o programador teria que desenvolver uma rotina muito extensa (como eu desenvolvi), com vários testes em FOPEN(), porque existe a necessidade de se "advinhar' como o DBF está (fechado, SHARED, EXCLUSIVE, na máquina local, em alguma outra estação). E o NETERR() já é feito pra isso mesmo, né ?

Abraços a todos !!!
Adm. Maickon Sato
Consultoria e Projetos
-------------------------------------------------------
Responder