Harbour y uso de scripts
Harbour y uso de scripts
Saludos,
Estoy pensando implementar el uso de scripts en mi aplicacion pero tengo las siguientes dudas:
1.- Los scripts deben ser compilados a .hrb o pueden ser solo .prg ?
2.- Si quiero proteger estos .prg como puedo encriptarlos ? Algun ejemplo ?
3.- A nivel de scripts, la sintaxis es la misma que un .prg tradicional, es decir, sin restriccion del tipo de variable (local, estatica, etc), uso de funciones o procedures, etc ?
4.- Existe documentacion donde pueda ver la sintaxis de Harbour para el manejo de scripts (Ejecucion, revision de sintaxis, etc ) ?
5.- Finalmente, se puede ejecutar el script desde una base de datos ?
He tratado de ejecutar los samples que trae fivewin pero me arrojan errores, por eso posteo esta inquietud
Atentos a sus comentarios,
Estoy pensando implementar el uso de scripts en mi aplicacion pero tengo las siguientes dudas:
1.- Los scripts deben ser compilados a .hrb o pueden ser solo .prg ?
2.- Si quiero proteger estos .prg como puedo encriptarlos ? Algun ejemplo ?
3.- A nivel de scripts, la sintaxis es la misma que un .prg tradicional, es decir, sin restriccion del tipo de variable (local, estatica, etc), uso de funciones o procedures, etc ?
4.- Existe documentacion donde pueda ver la sintaxis de Harbour para el manejo de scripts (Ejecucion, revision de sintaxis, etc ) ?
5.- Finalmente, se puede ejecutar el script desde una base de datos ?
He tratado de ejecutar los samples que trae fivewin pero me arrojan errores, por eso posteo esta inquietud
Atentos a sus comentarios,
Re: Harbour y uso de scripts
Hola,
1.- Los scripts deben ser compilados a .hrb o pueden ser solo .prg ?
Pueden ser de las dos clases
2.- Si quiero proteger estos .prg como puedo encriptarlos ? Algun ejemplo ?
Si, usando .hrb
3.- A nivel de scripts, la sintaxis es la misma que un .prg tradicional, es decir, sin restriccion del tipo de variable (local, estatica, etc), uso de funciones o procedures, etc ?
Si, sin restricciones
4.- Existe documentacion donde pueda ver la sintaxis de Harbour para el manejo de scripts (Ejecucion, revision de sintaxis, etc ) ?
Busque informacion sobre la funcion hb_CompileFromBuffer() y hb_HrbDo() / hb_HrbLoad()
Un buen ejemplo es esta función de Apache.prg desde HFW, que permite archivos .hrb y .prg:
https://github.com/FiveTechSoft/mod_har ... apache.prg
5.- Finalmente, se puede ejecutar el script desde una base de datos ?
Esta no la entiendo o lo que si entiendo la respuesta es no.
Saludos
1.- Los scripts deben ser compilados a .hrb o pueden ser solo .prg ?
Pueden ser de las dos clases
2.- Si quiero proteger estos .prg como puedo encriptarlos ? Algun ejemplo ?
Si, usando .hrb
3.- A nivel de scripts, la sintaxis es la misma que un .prg tradicional, es decir, sin restriccion del tipo de variable (local, estatica, etc), uso de funciones o procedures, etc ?
Si, sin restricciones
4.- Existe documentacion donde pueda ver la sintaxis de Harbour para el manejo de scripts (Ejecucion, revision de sintaxis, etc ) ?
Busque informacion sobre la funcion hb_CompileFromBuffer() y hb_HrbDo() / hb_HrbLoad()
Un buen ejemplo es esta función de Apache.prg desde HFW, que permite archivos .hrb y .prg:
https://github.com/FiveTechSoft/mod_har ... apache.prg
Code: Select all
function _AppMain()
local cFileName
ErrorBlock( { | o | DoBreak( o ) } )
cFileName = AP_FileName()
AddPPRules()
if File( cFileName )
if Lower( Right( cFileName, 4 ) ) == ".hrb"
hb_HrbDo( hb_HrbLoad( cFileName ), AP_Args() )
else
hb_SetEnv( "PRGPATH",;
SubStr( cFileName, 1, RAt( "/", cFileName ) + RAt( "\", cFileName ) - 1 ) )
Execute( MemoRead( cFileName ), AP_Args() )
endif
else
ErrorLevel( 404 )
endif
return nil
//----------------------------------------------------------------//
function Execute( cCode, ... )
local oHrb, uRet, lReplaced := .T.
local cHBheaders1 := "~/harbour/include"
local cHBheaders2 := "c:\harbour\include"
while lReplaced
lReplaced = ReplaceBlocks( @cCode, "{%", "%}" )
cCode = __pp_process( hPP, cCode )
end
oHrb = HB_CompileFromBuf( cCode, .T., "-n", "-I" + cHBheaders1, "-I" + cHBheaders2,;
"-I" + hb_GetEnv( "HB_INCLUDE" ), hb_GetEnv( "HB_USER_PRGFLAGS" ) )
if ! Empty( oHrb )
uRet = hb_HrbDo( hb_HrbLoad( oHrb ), ... )
endif
return uRet
5.- Finalmente, se puede ejecutar el script desde una base de datos ?
Esta no la entiendo o lo que si entiendo la respuesta es no.
Saludos
Re: Harbour y uso de scripts
Si lo que quieres decir es si puedes guardar los scripts en una base de datos, recuperarlos y ejecutarlos, la respuesta es SI
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
Re: Harbour y uso de scripts
Gracias cnavarro, hmpaquitocnavarro wrote:Si lo que quieres decir es si puedes guardar los scripts en una base de datos, recuperarlos y ejecutarlos, la respuesta es SI
Como ajusto harbour para que reconozca el #include "fivewin.ch" ?
Re: Harbour y uso de scripts
Fijate en la function Execute del codigo que ha puesto el compañero antes
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
Re: Harbour y uso de scripts
Me referia como lo hago desde la linea de comando, usando un .batcnavarro wrote:Fijate en la function Execute del codigo que ha puesto el compañero antes
Re: Harbour y uso de scripts
Se puede hacer pasándole la cláusula /i como en el ejemplo:Me referia como lo hago desde la linea de comando, usando un .bat
Code: Select all
harbour prueba.prg /ic:\fwh;d:\include\headers.ch;e:\harbour\include\std.ch
Re: Harbour y uso de scripts
Me arroja este errorhmpaquito wrote:Se puede hacer pasándole la cláusula /i como en el ejemplo:Me referia como lo hago desde la linea de comando, usando un .bat
Code: Select all
harbour prueba.prg /ic:\fwh;d:\include\headers.ch;e:\harbour\include\std.ch
Code: Select all
C:\Harbour\bin>harbour t02.prg /gh /ic:\fwh1901\include\headers.ch;c:\harbour\include\std.ch
Harbour 3.2.0dev (r1904111533)
Copyright (c) 1999-2019, https://harbour.github.io/
Compiling 't02.prg'...
t02.prg(1) Error F0029 Can't open #include file 'FiveWin.ch'
C:\Harbour\bin>
Re: Harbour y uso de scripts
Lo que puse era un ejemplo.
En tu caso deberia funcionar poniendo en el .bat lo siguiente:
En tu caso deberia funcionar poniendo en el .bat lo siguiente:
Code: Select all
SET INCLUDE=c:\fwh1901\include
Re: Harbour y uso de scripts
Gracias hmpaquito
Ahora si funciona
Ahora si funciona