Página 1 de 1
Usando extensão HRB
Enviado: 26 Abr 2013 08:44
por Itamar M. Lins Jr.
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.
Usando extensão HRB
Enviado: 29 Abr 2013 17:48
por asimoes
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
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)

Usando extensão HRB
Enviado: 29 Abr 2013 18:10
por Itamar M. Lins Jr.
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.
Usando extensão HRB
Enviado: 29 Abr 2013 18:28
por Itamar M. Lins Jr.
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.
Usando extensão HRB
Enviado: 29 Abr 2013 21:27
por asimoes
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.
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
Usando extensão HRB
Enviado: 30 Abr 2013 08:03
por asimoes
Itamar
consegui.
Tem que usar: REQUEST DBEDIT (fora do script)
Usando extensão HRB
Enviado: 30 Abr 2013 11:12
por asimoes
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" ))
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
HSCRIPT.PRG
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
Usando extensão HRB
Enviado: 30 Abr 2013 14:06
por asimoes
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 ?
Itamar,
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