Jump to content
Fivewin Brasil

Uso de arquivo ".HRB"


Jmsilva

Recommended Posts

"Um contrato bem elaborado ajuda muito, também faça uso de arquivos .hrbs pra proteger algumas informacoes mais sensíveis.

Trabalho a distância é uma realidade e não adianta nadar contra a correnteza, devemos nos adaptar." @vailtom

@vailtom aproveitando sua colaboração no link do programador, aproveitando seus conhecimentos, poderia exemplificar o uso arquivo .hrb, gerar com o comando harbour test.prg /n /gh consegui, porém não entendi como fazer a chamada, se preciso gerar  um .exe com as funções _hrbload(),  _hrbDo() e _hrbUnload(), se for isto, no meu exemplo falta lib correspondente. Quem puder contribuir com exemplos prático serei grato! 

 


 

 

 
Link to comment
Share on other sites

Olá,

Creio que o Kapiaba matou a pau o problema mais comum com o primeiro link: voce precisa carregar o .hrb pra memoria e guardar ele numa variavel durante todo o período em que precisar usar o seu conteúdo. Quando a variável morrer, o arquivo .hrb será descarregado da memória e suas funções estarão indisponíveis novamente.

Guarde-o numa variavel estática ou publica e poderá chamar sempre suas funções carregadas externamente.

Espero ter ajudado.

Link to comment
Share on other sites

Segue um exemplo de uso. Uso HRB a quase 20 anos, desde que ainda era instável o seu funcionamento para strings.

 

Function u_Teste()
Local oScript
 
oScript := __hrbLoad"myprog.hrb" )
 
__hrbDo( oScript, uPar01, uPar02, uPar03)  // caso o HRB receba mais parametros basta criar uPar04, uPar05, ..., uPar99
 
__hrbUnload( oScript )
 
Return
Link to comment
Share on other sites

4 horas atrás, emotta disse:

Segue um exemplo de uso. Uso HRB a quase 20 anos, desde que ainda era instável o seu funcionamento para strings.

 

Function u_Teste()
Local oScript
 
oScript := __hrbLoad"myprog.hrb" )
 
__hrbDo( oScript, uPar01, uPar02, uPar03)  // caso o HRB receba mais parametros basta criar uPar04, uPar05, ..., uPar99
 
__hrbUnload( oScript )
 
Return

Show meu amigo Eduardo!

Meu erro era usar um "_", sendo certo dois "__".

"_hrbload()' não era encontrada a function nas libs. Valeu! agora deu certo!

Eduardo, como nunca usei, mas achei interessante vou estudar e entender esta técnica,   agora vamos ao Bizu (dica). 

Aproveitando vc usa tipo em todas a telas, por exemplo cadastro de cliente, contas, etc ou em alguma rotina específica como uma conexão, ou uma rotina de manutenção, o que vc me diz?

O que me chamo a atenção a frase do  Vailton  - "... também faça uso de arquivos .hrbs pra proteger algumas informações mais sensíveis"

De qq forma estou muito grato com a sua ajuda e dos demais amigos, estarei sempre à disposição no que puder colaborar! 

 

 

Link to comment
Share on other sites

14 minutos atrás, Jmsilva disse:

Show meu amigo Eduardo!

Meu erro era usar um "_", sendo certo dois "__".

"_hrbload()' não era encontrada a function nas libs. Valeu! agora deu certo!

Eduardo, como nunca usei, mas achei interessante vou estudar e entender esta técnica,   agora vamos ao Bizu (dica). 

Aproveitando vc usa tipo em todas a telas, por exemplo cadastro de cliente, contas, etc ou em alguma rotina específica como uma conexão, ou uma rotina de manutenção, o que vc me diz?

O que me chamo a atenção a frase do  Vailton  - "... também faça uso de arquivos .hrbs pra proteger algumas informações mais sensíveis"

De qq forma estou muito grato com a sua ajuda e dos demais amigos, estarei sempre à disposição no que puder colaborar! 

 

 

eu uso muito pra fazer o que chamo de "ponto de entrada" (quem conhece microsiga sabe o que estou dizendo)

 

Imagina que um cliente seu deseja que toda vez que se inclui um novo fornecedor ele receba um email. Em vez de você criar um parametro e deixar isso no seu fonte padrão (que vc distribui para todos clientes) eu deixo isso fora do executavel. Na pasta onde você instala o sistema (onde fica o executavel) crie uma subpasta chamada HRB. Dentro dessa pasta você coloca os HRBs daquele cliente.

 

Então no seu codigo fonte padrão, após a inclusão do fornecedor você coloca assim:

If ExistHRB("enviar_email_inclusao_fornecedor)
   ExecHrb("enviar_email_inclusao_fornecedor")

EndIf

 

Na funcao ExistHRB vc faz um IF FILE(name_hrb) retornando .T. se o arquivo existir ou .F. se não existir

na funcao ExecHrb vc faz o hrbload, hrbdo, hrbunload

 

Faço dessa forma em meus sistemas desktop, você pode criar o seu formato a partir dessa idéia ou das outras que foram dadas.

Abraços

 

 

 

 

Link to comment
Share on other sites

Em 08/07/2021 at 15:19, Jmsilva disse:O que me chamo a atenção a frase do  Vailton  - "... também faça uso de arquivos .hrbs pra proteger algumas informações mais sensíveis"

Voce pode criar um executável com algumas funções mais sensíveis e que deseja manter restrito sem compartilhar seus sources com a equipe.

As demais telas e relatórios você pode compartilhar com seu time e gerando hrbs para fazer o carregamento externo deste conteúdo sem problemas.

Deu pra pegar a ideia ae?

Link to comment
Share on other sites

Em 10/07/2021 at 16:59, giovanyvecchi disse:

Aproveitando o tópico gostaria de saber se tem como criar apenas um arquivo .hrb com varias funções nele.

Olá Giovany,

Deste modo não pois ele não se comporta como um arquivo .LIB, mas você pode criar um arquivo (relativamente) grande com todas as funções que precisa.
Tenho um aqui com quase 40mil linhas e roda bem...

Link to comment
Share on other sites

Olá Giovany,
Sim, entendo... faz sentido. 

Mas pense em outro cenário: em um projeto eu tenho um arquivo .ZIP (que eu mudei a extensão pra outra qqer) com vários .HRBs dentro dele e no carregamento eu descompacto o seu conteudo numa pasta temporária, carrego os .HRBs que são pertinentes aquela instalação em específico pra memória e logo depois disto eu apago toda a pasta gerada no processo. Daê pra frente o software segue com sua execução tradicional... tenho um script que compila todos os .PRGs, geram o .ZIP e até faz o upload pra um FTP. 

São mais 2 centavos à este assunto, espero ter ajudado.

Link to comment
Share on other sites

Em 13/07/2021 at 14:52, vailtom disse:

Olá Giovany,
Sim, entendo... faz sentido. 

Mas pense em outro cenário: em um projeto eu tenho um arquivo .ZIP (que eu mudei a extensão pra outra qqer) com vários .HRBs dentro dele e no carregamento eu descompacto o seu conteudo numa pasta temporária, carrego os .HRBs que são pertinentes aquela instalação em específico pra memória e logo depois disto eu apago toda a pasta gerada no processo. Daê pra frente o software segue com sua execução tradicional... tenho um script que compila todos os .PRGs, geram o .ZIP e até faz o upload pra um FTP. 

São mais 2 centavos à este assunto, espero ter ajudado.

Obrigado Vailtom pela ideia.

Mais adiante vou pensar nestas possibilidades buscando estes HRBs diretamente do meu servidor em uma tabela com campos binarios.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...