Usando extensão HRB
Moderador: Moderadores
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7929
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Usando extensão HRB
Ola!
Alguém do forum está trabalhando com esta extensão ?
Tem como linkar dois PRG´s criando um único HRB ?
Saudações,
Itamar M. Lins Jr.
Alguém do forum está trabalhando com esta extensão ?
Tem como linkar dois PRG´s criando um único HRB ?
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
Usando extensão HRB
Olá Itamar,
Veja se você pode tirar essa minha duvida.
Estou testando esse código com o hrb e estou tendo erro erro na execução da chamada da dbedit

Veja se você pode tirar essa minha duvida.
Estou testando esse código com o hrb e estou tendo erro erro na execução da chamada da dbedit
Código: Selecionar todos
cProg:=""
cProg+="Function Prog()"+Chr(13)+Chr(10)
//cProg+="Alert('estou executando HRB','Atenção')"+Chr(13) +Chr(10) // tive que tirar a ?
cProg+="USE APC01 ALIAS APC01"+Chr(13) +Chr(10)
cProg+="dbedit()"+Chr(13) +Chr(10)
cProg+="? alias()"+Chr(13) +Chr(10)
cProg+="? APC01->Codigo,APC01->Nome"+Chr(13) +Chr(10)
cProg+="u_Return := 'teste'"+Chr(13)+Chr(10)
cProg+="Return"+Chr(13)+Chr(10)
MemoWrit("prog.prg",cProg)
Run("\hbmsvc32\bin\Harbour.exe prog.prg /q0 /n /gh /i:k:\hbmsvc32\include")
HB_HRBRun("prog.hrb")
? "script retornou: "+u_Return
inkey(0)

►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7929
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Usando extensão HRB
Ola!
Acredito que a Dbedit não está sendo linkada ao código. Teste com a classe tBrowse.
Eu estou com um problema parecido, só que com o LetoDB.
Irei fazer uns testes aqui para ver se entendo o que está acontecendo.
Saudações,
Itamar M. Lins Jr.
Acredito que a Dbedit não está sendo linkada ao código. Teste com a classe tBrowse.
Eu estou com um problema parecido, só que com o LetoDB.
Irei fazer uns testes aqui para ver se entendo o que está acontecendo.
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7929
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Usando extensão HRB
Como está fazendo para executar o esse código ?
Eu não estou entendendo como usar esse recurso do harbour. Como script CGI eu entendi, mas tem outras possibilidades.
Saudações,
Itamar M. Lins Jr.
Eu não estou entendendo como usar esse recurso do harbour. Como script CGI eu entendi, mas tem outras possibilidades.
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
Usando extensão HRB
Itamar,
Meu código de teste completo é este: consegui no forum do fivewin. o dbedit() fui eu quem adicionou tentei também com tbrowse e deu o mesmo erro.
Estou fazendo pelo método de tentativa e erro é quase nulo as informações deste recurso que achei muito interessante de usar.
Dá uma olha neste include hbhrb.ch que está na pasta include do harbour talvez dê alguma dica.
Meu código de teste completo é este: consegui no forum do fivewin. o dbedit() fui eu quem adicionou tentei também com tbrowse e deu o mesmo erro.
Estou fazendo pelo método de tentativa e erro é quase nulo as informações deste recurso que achei muito interessante de usar.
Dá uma olha neste include hbhrb.ch que está na pasta include do harbour talvez dê alguma dica.
Código: Selecionar todos
#include "inkey.ch"
#include "setcurs.ch"
#include "error.ch"
#include "achoice.ch"
#include "fileio.ch"
#include "common.ch"
#include "dbinfo.ch"
#include "hbver.ch"
#include "hbdyn.ch"
#include "wvtwin.ch"
#include "hbgtinfo.ch"
#include "hbgtwvg.ch"
#include "wvgparts.ch"
#include "hbcompat.ch"
#include "windows.ch"
#include "hbhrb.ch"
FUNCTION MAIN
LOCAL aCourier, i
PRIVATE u_Return
fErase("prog.prg")
cProg:=""
cProg+="Function Prog()"+Chr(13)+Chr(10)
//cProg+="Alert('estou executando HRB','Atenção')"+Chr(13) +Chr(10) // tive que tirar a ?
cProg+="USE APC01 ALIAS APC01"+Chr(13) +Chr(10)
cProg+="dbedit()"+Chr(13) +Chr(10)
cProg+="? alias()"+Chr(13) +Chr(10)
cProg+="? APC01->Codigo,APC01->Nome"+Chr(13) +Chr(10)
cProg+="u_Return := 'teste'"+Chr(13)+Chr(10)
cProg+="Return"+Chr(13)+Chr(10)
MemoWrit("prog.prg",cProg)
Run("\hbmsvc32\bin\Harbour.exe prog.prg /q0 /n /gh /i:d:\hbmsvc32\include") // coloquei o caminnho do meu harbour.exe e nao xharbour.exe*/
HB_HRBRun(HB_HRB_BIND_OVERLOAD,"prog.hrb")
? "script retornou: "+u_Return
inkey(0)
QUIT
RETURN NIL
INIT FUNCTION AppSetup()
REQUEST HB_LANG_PT
REQUEST HB_CODEPAGE_PT850
HB_LANGSELECT("PT")
HB_CDPSELECT( "PT850" )
REQUEST DBFCDX
REQUEST HB_MEMIO
RddSetDefault("DBFCDX")
SETMODE(25,80)
SET TYPEAHEAD TO 0
SET INTENSITY ON
SET SCOREBOARD OFF
SET DELETED ON
SET SAFETY OFF
SET ESCAPE ON
SET CENTURY ON
SET DELIMITERS TO
SET EXCLUSIVE OFF
SET WRAP ON
SET EPOCH TO 1920
SET OPTIMIZE ON
SET AUTOPEN ON
SET DBFLOCKSCHEME TO DB_DBFLOCK_DEFAULT
SET MESSAGE TO 24 CENTER
CLS
IniciaJanela()
RETURN Nil
FUNCTION IniciaJanela(nLi,nCi,nLf,nCf)
cTituloJanela:="TESTE"
HB_gtInfo(HB_GTI_FONTNAME, "Lucida Console")
HB_gtInfo(HB_GTI_ICONRES, "ICON_ASAPREV" ) //CLIENTE.RC
HB_gtInfo(HB_GTI_WINTITLE, cTituloJanela)
HB_gtInfo(HB_GTI_CLOSABLE, .F. )
HB_gtInfo(HB_GTI_CLIPBOARDDATA )
HB_gtInfo(HB_GTI_SELECTCOPY, .T. )
HB_gtInfo(HB_GTI_MOUSESTATUS, 1 )
HB_gtInfo(HB_GTI_ISGRAPHIC, .T. )
HB_gtInfo(HB_GTI_STDERRCON, .T. )
HB_gtInfo(HB_GTI_COMPATBUFFER, .T. )
HB_gtInfo(HB_GTI_SPEC, HB_GTS_WNDSTATE, HB_GTS_WS_MAXIMIZED )
hwg_doevents()
RETURN Nil
FUNCTION HB_GTSYS()
REQUEST HB_GT_WVG_DEFAULT
REQUEST HB_GT_WVT
REQUEST HB_GT_WGU
REQUEST HB_GT_WVG
RETURN Nil
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Usando extensão HRB
Itamar
consegui.
Tem que usar: REQUEST DBEDIT (fora do script)
consegui.
Tem que usar: REQUEST DBEDIT (fora do script)
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Usando extensão HRB
Continuando os testes consegui fazer isto:
Pode usar EVAL ou EXEC
HANDLE_FUN1:EVAL()
HANDLE_FUN1:EXEC()
ou
EVAL(HANDLE_FUN1)
ou
EVAL(HB_HRBGETFUNSYM( HANDLE_HRB, "PROG1" ))
EVAL(HB_HRBGETFUNSYM( HANDLE_HRB, "PROG2" ))
HSCRIPT.PRG
Pode usar EVAL ou EXEC
HANDLE_FUN1:EVAL()
HANDLE_FUN1:EXEC()
ou
EVAL(HANDLE_FUN1)
ou
EVAL(HB_HRBGETFUNSYM( HANDLE_HRB, "PROG1" ))
EVAL(HB_HRBGETFUNSYM( HANDLE_HRB, "PROG2" ))
Código: Selecionar todos
cScript:=MemoRead( "hbscript.prg" )
cHarbourCode := hb_compileFromBuf( cScript, "d:\hbmsvc32\bin\harbour", "/q0", "/n", "/gh","/i:d:\hbmsvc32\include")
MemoWrit( "hbscript.hrb", cHarbourCode )
cConteudo:=MemoRead( "hbscript.hrb" )
HANDLE_HRB := hb_hrbload( cConteudo )
HANDLE_FUN1 := HB_HRBGETFUNSYM( HANDLE_HRB, "PROG1" )
HANDLE_FUN2 := HB_HRBGETFUNSYM( HANDLE_HRB, "PROG2" )
HANDLE_FUN1:EVAL()
HANDLE_FUN2:EVAL()
? "script 1 retornou: "+u_Return1
? "script 2 retornou: "+u_Return2
inkey(0)
quit
Código: Selecionar todos
FUNCTION PROG1
LOCAL cTeste
CLS
cTeste:='ESTOU EXECUTANDO UM SCRIPT 1'
hwg_MsgInfo(cTeste,'Atenção')
hwg_MsgInfo('estou executando HRB','Atenção')
USE APC01 ALIAS APC01
dbedit()
CLS
? alias()
? APC01->Codigo,APC01->Nome
u_Return1 := 'SCRIPT 1'
RETURN Nil
FUNCTION PROG2
LOCAL cTeste
CLS
cTeste:='ESTOU EXECUTANDO UM SCRIPT 2'
hwg_MsgInfo(cTeste,'Atenção')
hwg_MsgInfo('estou executando HRB','Atenção')
USE APC01 ALIAS APC01
dbedit()
CLS
? alias()
? APC01->Codigo,APC01->Nome
u_Return2 := 'SCRIPT 2'
RETURN Nil
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Usando extensão HRB
Itamar,Itamar M. Lins Jr. escreveu:Alguém do forum está trabalhando com esta extensão ?
Tem como linkar dois PRG´s criando um único HRB ?
Para linkar 2 ou mais fontes tem criar um arquivo com a extensão .clp
exemplo lista.clp, dentro deste arquivo você informa os fontes com a extensão, no meu caso está assim:
lista.clp
hscript.prg
hscript2.prg
Para gerar o hrb eu estou fazendo assim:
MyRun("\hbmsvc32\bin\harbour.exe @lista -q0 -n -gh /i:\hbmsvc32\include")
Vai ser gerado o arquivo lista.hrb
Código: Selecionar todos
FUNCTION MYRUN( cComando,lEspera )
LOCAL oShell, lOk:=.T.
DEFAULT lEspera TO .T.
TRY
oShell:=CreateObject( "WScript.Shell" )
TRY
oShell:Run( "%comspec% /c " + cComando, 0, lEspera )
CATCH
lOk:=.F.
END
oShell:=Nil
CATCH
lOk:=.F.
END
RETURN lOk
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
