Programa em XHarbour todo na memória com o executável livre?

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

frank_fpc
Usuário Nível 1
Usuário Nível 1
Mensagens: 17
Registrado em: 02 Jun 2006 19:34

Programa em XHarbour todo na memória com o executável livre?

Mensagem por frank_fpc »

Oi amigos,

Antes de usar o XHarbour, eu utilizava o Blinker para gerenciamento adequado da memória no Clipper, e quando eu o utilizava, não usava arquivo de overlay e carregava todo na memória, sendo assim eu poderia a qualquer momento atualizar o executável no servidor sem problema, e quando o usuário saia do programa e entrava novamente já estava na nova versão.

No Xharbour já não acontece assim, pelo menos, com as cfg mais disseminadas no forum, se eu tentar atualizar o executável no servidor e algum usuário estiver utilizando o programa não é possível pq o executável está em usom sendo necessário sair todos os usuário que estejam utilizando o programa para atualizá-lo. È possível fazer da mesma forma no XHarbour por meio de alguma configuração específica? Se sim, como fazê-lo?

Agradeço aos amigos que contribuirem.
Vivendo, Aprendendo e Ensinando!!!
------------------------------------------
" É melhor se arrepender de um erro tentanto acertar do que se lastimar de nunca ter tentado "
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: Programa em XHarbour todo na memória com o executável livre?

Mensagem por sygecom »

Eu simplesmente renomeio o Executavel que esta em uso (Ex: SISTEMA.EXE ficaria SISTEMA2.EXE) e atualizo com o executavel novo(SISTEMA.EXE), porem para isso funcionar tem privilégios de Adimitrador do windows.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Hasse
Usuário Nível 4
Usuário Nível 4
Mensagens: 820
Registrado em: 19 Out 2004 10:30
Localização: Jaraguá do Sul - SC

Re: Programa em XHarbour todo na memória com o executável livre?

Mensagem por Hasse »

Olá Frank.

Eu uso de tal forma que nenhum terminal carrega diretamente o executável.

Via um BAT, cada terminal copia o executável do Servidor para o seu HD e o executa. Assim posso atualizar a qualquer momento o programa no Servidor.

Da próxima vez que o terminal abrir o executável estará automaticamente atualizado sem qualquer preocupação da minha parte.

É evidente que existem formas mais sofisticadas, e elas já foram discutidas no Fórum. Basta dar uma pesquisada.
Hasse
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: Programa em XHarbour todo na memória com o executável livre?

Mensagem por sygecom »

Outra opção é ter em sua aplicação uma rotina que rode em BackGround, que faça o sistema fehar em todos as estações.
Exemplo eu tenho uma rotina que fica vereficando se o arquivo fecha.txt se encontra se ele achar ele inicia um procedimento de fechar a aplicação.

Coloco no inicio do sistema a função: Iniciar_backGround()

Código: Selecionar todos

Function Iniciar_backGround
nTask1 := HB_BackGroundAdd( {|| Fecha_Auto(15) }, 15000 )
Return Nil

Function Fecha_Auto(vAguarda)  // vem por parametro a quantidade de segundos até fechar

if file("update\fecha.txt") // se achar o arquivo que é gerado assim que o sistema acha uma nova versçao no FTP...
   Private oDlgHabla:=nil
   MsgRun("O Sistema vai Fechar nessa estação em: " +str(vAguarda)+ " Segundos...")

   for nI:=1 to vAguarda // quantidade de segundos a aguardar
      MilliSec( 1000 )
      HW_Atualiza_Dialogo2("O Sistema vai Fechar nessa estação em: "+ STR(vAguarda-nI) +" Segundos...")
   next
   Fim_Run()
      __Quit()
endif
Return
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
frank_fpc
Usuário Nível 1
Usuário Nível 1
Mensagens: 17
Registrado em: 02 Jun 2006 19:34

Re: Programa em XHarbour todo na memória com o executável livre?

Mensagem por frank_fpc »

Oi gente, agradeço a contribuição de todos.

Amigos Leonardo e Hasse, gostei das postagens de ambos, e vou ver a melhor forma de resolver esse probleminha, agora me questionei bastante o fato de não ter feito um teste relacionado a essa observação tão básica que o nosso amigo Leo falou sobre renomear o executável, nem me toquei de verificar essa possibilidade. Gostei da função em background para verificar atualizações, no entanto concernente a ela pergunto: vc tem algum controle para que, caso o usuário esteja no meio de um cadastro ou uma operação meio longa, ele não seja interrompido no meio do seu trabalho e fiquei informações incompletas no banco de dados?

Agradeço a todos pelas contribuições.
Vivendo, Aprendendo e Ensinando!!!
------------------------------------------
" É melhor se arrepender de um erro tentanto acertar do que se lastimar de nunca ter tentado "
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: Programa em XHarbour todo na memória com o executável livre?

Mensagem por sygecom »

Olá frank_fpc,

Meu unico controle é o timer dos 60 segundos que é o tempo que o usuario tem para salvar e fechar tudo, caso contrario se ele tiver no meio de um cadastro o sistema vai fechar todas as DIALOG pendentes e finalizar o sistema se salvar esse cadastro.
Calculei que um min. é o bastante para ele salvar o que esta fazendo, indepentende onde esteja no meu sistema.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Responder