FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Harbour y uso de scripts
Posts: 1276
Joined: Tue Dec 28, 2010 01:29 PM
Harbour y uso de scripts
Posted: Tue Jul 09, 2019 02:10 PM

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,

FWH 25.12

Harbour/Hbmk2

Microsoft Visual C++

MySql 8.0

Antigravity

Posts: 1515
Joined: Thu Oct 30, 2008 02:37 PM
Re: Harbour y uso de scripts
Posted: Tue Jul 09, 2019 02:40 PM
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
Code (fw): Select all Collapse
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
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Harbour y uso de scripts
Posted: Tue Jul 09, 2019 02:53 PM

Si lo que quieres decir es si puedes guardar los scripts en una base de datos, recuperarlos y ejecutarlos, la respuesta es SI

Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo

El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 1276
Joined: Tue Dec 28, 2010 01:29 PM
Re: Harbour y uso de scripts
Posted: Tue Jul 09, 2019 02:54 PM
cnavarro wrote:Si lo que quieres decir es si puedes guardar los scripts en una base de datos, recuperarlos y ejecutarlos, la respuesta es SI


Gracias cnavarro, hmpaquito

Como ajusto harbour para que reconozca el #include "fivewin.ch" ?

FWH 25.12

Harbour/Hbmk2

Microsoft Visual C++

MySql 8.0

Antigravity

Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Harbour y uso de scripts
Posted: Tue Jul 09, 2019 03:10 PM

Fijate en la function Execute del codigo que ha puesto el compañero antes

Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo

El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 1276
Joined: Tue Dec 28, 2010 01:29 PM
Re: Harbour y uso de scripts
Posted: Tue Jul 09, 2019 03:35 PM
cnavarro wrote:Fijate en la function Execute del codigo que ha puesto el compañero antes


Me referia como lo hago desde la linea de comando, usando un .bat

FWH 25.12

Harbour/Hbmk2

Microsoft Visual C++

MySql 8.0

Antigravity

Posts: 1515
Joined: Thu Oct 30, 2008 02:37 PM
Re: Harbour y uso de scripts
Posted: Wed Jul 10, 2019 06:10 AM
Me referia como lo hago desde la linea de comando, usando un .bat


Se puede hacer pasándole la cláusula /i como en el ejemplo:

Code (fw): Select all Collapse
harbour prueba.prg /ic:\fwh;d:\include\headers.ch;e:\harbour\include\std.ch
Posts: 1276
Joined: Tue Dec 28, 2010 01:29 PM
Re: Harbour y uso de scripts
Posted: Wed Jul 10, 2019 11:57 AM
hmpaquito wrote:
Me referia como lo hago desde la linea de comando, usando un .bat


Se puede hacer pasándole la cláusula /i como en el ejemplo:

Code (fw): Select all Collapse
harbour prueba.prg /ic:\fwh;d:\include\headers.ch;e:\harbour\include\std.ch


Me arroja este error

Code (fw): Select all Collapse
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>

FWH 25.12

Harbour/Hbmk2

Microsoft Visual C++

MySql 8.0

Antigravity

Posts: 1515
Joined: Thu Oct 30, 2008 02:37 PM
Re: Harbour y uso de scripts
Posted: Wed Jul 10, 2019 01:14 PM
Lo que puse era un ejemplo.
En tu caso deberia funcionar poniendo en el .bat lo siguiente:

Code (fw): Select all Collapse
SET INCLUDE=c:\fwh1901\include
Posts: 1276
Joined: Tue Dec 28, 2010 01:29 PM
Re: Harbour y uso de scripts
Posted: Wed Jul 10, 2019 01:21 PM

Gracias hmpaquito

Ahora si funciona

FWH 25.12

Harbour/Hbmk2

Microsoft Visual C++

MySql 8.0

Antigravity

Continue the discussion