Page 1 of 1

Usando la hbcplr.lib con Harbour

PostPosted: Sun Feb 08, 2015 4:55 pm
by Armando
Antonio y amigos del foro:

He logrado compilar una aplicación de regular tamaño (50 prgs) en la que uso
la lib hbcplr y me he quedado impresionado, compilar un script (prg) con 2500
líneas desde el ejecutable es extremadamente rápido y funciona al 100%.

El único pero, nunca falta un pero :) , es que estoy de acuerdo con Mastintin,
que es necesario incluir los include de FWH y Harbour, Antonio, no se puede hacer
algo para subsanar este pero???, va a ser una lata distribuirlos con mi aplicación.

Antonio, un detalle que se me olvidó mencionarte es esta línea de código en FiveEdit

Code: Select all  Expand view

   IF "error" $ MemoRead( "comp.log" )
      MsgInfo( MemoRead( "comp.log" ), oApp:cAplicacion)
   ELSE
 


La palabra error debe ser con la inicial en mayúscula "Error", de lo contrario
no funciona la búsqueda.

Saludos

Re: Usando la hbcplr.lib con Harbour

PostPosted: Sun Feb 08, 2015 8:30 pm
by Antonio Linares
Armando,

Gracias por detectar ese error. Incluido para el próximo build de Fivedit :-)

Me alegro que hayas comprobado por ti mismo lo que llevo diciendo desde hace mucho tiempo:

Una vez que descubres y pruebas el poder de hbcplr.lib, xHarbour queda automaticamente descartado...

Harbour es el rey indiscutible :-)

Re: Usando la hbcplr.lib con Harbour

PostPosted: Sun Jul 03, 2016 8:30 pm
by goosfancito
Antonio,

Hace tiempo que quiero pasarme a harbour pero pruebo intentar crear un simple programa
? "hola"

y no logro crearlo utilizando un script...

Re: Usando la hbcplr.lib con Harbour

PostPosted: Mon Jul 04, 2016 5:54 am
by Antonio Linares
Gustavo,

Para que Harbour reconozca ese comando ? ... es preciso que haya "procesado" las definiciones
que hay en el fichero std.ch

Puedes añadir los comandos que desees en tiempo de ejecución para que el script los reconozca:
Code: Select all  Expand view
function BuildPreprocessor()

   if hPP == nil
      hPP = __pp_init()
   endif

   __pp_addRule( hPP, "#xcommand ?  [ <list,...> ] => _QOut( <list> )" )
   __pp_addRule( hPP, "#xcommand ?? [ <list,...> ] => _QQOut( <list> )" )
   __pp_addRule( hPP, "#xcommand BROWSE => Browse()" )
   __pp_addRule( hPP, "#xcommand CLEAR => _Clear()" )
   __pp_addRule( hPP, "#xcommand DO COMMAND <x> => DoCommand( <(x)> )" )
   __pp_addRule( hPP, "#xcommand DO FORM <x> => DoForm( <(x)> )" )
   __pp_addRule( hPP, "#xcommand EDIT => Edit()" )
   __pp_addRule( hPP, "#xcommand ENDPROC => return" )
   __pp_addRule( hPP, "#xcommand MODIFY COMMAND <x> => ModifyCommand( <(x)> )" )
   __pp_addRule( hPP, "#xcommand PUBLIC <x> => __mvPublic( <(x)> )" )

return nil

Re: Usando la hbcplr.lib con Harbour

PostPosted: Mon Jul 04, 2016 5:57 am
by Antonio Linares
Ese hPP se usa luego a la hora de "compilar" el script:
Code: Select all  Expand view

function DoLine( nKey, oMemo )

   local cCommand, cPP, oError
   local bError

   if nKey != 13 .and. nKey != 3
      return nil
   endif

   cCommand = MemoLine( oMemo:GetText(),, oMemo:nRow() - 1 )
   if Empty( cCommand )
      return nil
   endif
   cPP = __pp_process( hPP, cCommand )

   bError = ErrorBlock( { | o | Break( o ) } )
   BEGIN SEQUENCE
      &cPP
   RECOVER USING oError
      ShowError( oError )
   END SEQUENCE
   ErrorBlock( bError )

return nil

Re: Usando la hbcplr.lib con Harbour

PostPosted: Mon Jul 04, 2016 8:17 am
by goosfancito
gracias.