Abrir sistema + de 1 vez (rotina do Eolo)

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
Poka
Usuário Nível 4
Usuário Nível 4
Mensagens: 563
Registrado em: 25 Out 2004 21:26
Localização: Leme/SP

Abrir sistema + de 1 vez (rotina do Eolo)

Mensagem por Poka »

Prezado colega Eolo,

Abri esse novo topico, pois no outro os assuntos estavam misturados.


Coloquei a sua rotina no sistema e funcionou normal em casa (sem rede)

Na rede, se um terminal está com o sistema aberto, os outros terminais acusa que o sistema já está em uso. Resolvi o problema criando um arquivo para cada terminal (logico que o sistema cria automaticamente esses arquivos, eu ja uso esse artifício para guardar as impressoras de cada terminal, o nome do arquivo eu crio com o nome do terminal + uma extensao qualquer)"
A rotina abaixo está sem alteracao que eu fiz.
Pode ser que o erro tá na cara, e eu não estou enxergando.

Código: Selecionar todos

// no inicio do sistema
if ! f_aberto()
  alert("sistema ja esta aberto)
   quit
endif
//////////////
func F_aberto
   
   arq:=”aberto.txt”
   if ! file(arq)
      arqh:=fcreate(arq,0)
      if ! arqh > 0
         alert("Erro ao iniciar sistema;Tecle Enter")
         retu .f.
      endif
      txt:="testa se o sistema ja esta aberto"
      txt_t:=fwrite(arqh,txt)
      if ! txt_t=len(txt)
         alert("Erro ao registrar Acesso;Tecle Enter")
        retu .f.
      endif
      fclose(arqh)
   endif
   // ja existe, abre exclusivo
   janela2=fopen(arq,18)  // tenta abrir para gravacao
   if !janela2>0
      retu .f.
   endif
   rele arq,arqch,janela,txt,txt_t
retu .t.

Um abraço

Poka
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Buenas...

De uma procurada no FORUM que vc vai achar varios post sobre esse assunto....

Abraços
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Mensagem por Eolo »

Poka,

Não sei se entendi direito a sua dúvida, mas é o seguinte: quando vc faz arq:=”term99.txt” (onde term99 = nome do terminal), o arquivo vai ser criado e aberto na pasta onde o sistema está sendo rodado. O SET DEFAULT TO não interfere no FOPEN() e FCREATE().

Então, se vc quer criar esses arquivos de controle num lugar determinado, tem que colocar o path:
arq:=”c:\pasta\subpasta\term99.txt” ou
arq:=”\\servidor\pasta\subpasta\term99.txt”.

Se por exemplo vc guardar tudo no servidor, na tal "subpasta" acima vão estar os arquivos term01, term02, term03.txt etc., ou seja, os arquivos (bloqueados) correspondentes aos terminais que estão no ar. Aí, se o terminal 02 tentar entrar de novo em outra instância do DOS (no mesmo PC) ou em qualquer outra estação, não vai conseguir, porque o arquivo term02.txt já está bloqueado pela primeira instância...

Diga se isso respondeu à sua pergunta.

Eolo
Avatar do usuário
Poka
Usuário Nível 4
Usuário Nível 4
Mensagens: 563
Registrado em: 25 Out 2004 21:26
Localização: Leme/SP

Mensagem por Poka »

Prezado Eolo

Realmente a minha duvida era essa , como eu gravo tudo onde esta o sistema eu criei um arquivo para cada terminal, e tá funcionado beleza.

Valeu.

Leonardo, obrigado também por responder.


Um abraço

Poka
Responder