Page 1 of 2

Crea LIB (xa)Script, un sueño

PostPosted: Sun Feb 01, 2015 5:01 pm
by Armando
Antonio:

Como dijo M. L. King, "Tengo un sueño", que tan posible es crear un LIB como
la xaScript de tu ex o como la de xHarbour profesional ????.

Saludos

Re: Crea LIB (xa)Script, un sueño

PostPosted: Sun Feb 01, 2015 6:19 pm
by Antonio Linares
Armando,

Ese sueño es una realidad y mucho más poderosa :-)

La librería hbcplr.lib de Harbour, no es que sea un "script", es que es Harbour "entero" a tu disposición y desde tu propia aplicación.

Descarga fivedit.exe desde aqui:
https://bitbucket.org/fivetech/fivewin-contributions/downloads/fivedit.zip
(incluye todo el código fuente para que veas como se hace)

Escribe el código que quieras y pulsa el botón "script" de la barra de botones. Tu código se compila y se ejecuta en memoria!!!

Los "scripts" anteriores eran juguetes comparados con esto :-)

Re: Crea LIB (xa)Script, un sueño

PostPosted: Sun Feb 01, 2015 7:37 pm
by Armando
Antonio:

Hasta ahora mis aplicaciones están hechas con FW y xHarbour pero si ya existe
dicha lib bien vale la pena mudarme a Harbour, seguramente tendré que hacer
cambios a mi código pero vale la pena.

Voy a probarla, ya te informaré el resultados.

Con que versiones de Harbour y Borland debo usar?

Saludos

Re: Crea LIB (xa)Script, un sueño

PostPosted: Sun Feb 01, 2015 9:27 pm
by Verhoven
Hasta donde tengo probado, que lo he cambiado todo bastante rápido de xHarbour a HBarbour entre diciembre pasado y enero, va bien con BCC 582, BCC 6.3 (para 32 bits) y Visual Studio Comunity 2013 para 64 bits. Las versiones de Harbour y FW son de enero y son las descargadas de fivetech. Hay varios post recientes donde puedes ver los cambios (pocos) que hemos tenido que acometer.

Re: Crea LIB (xa)Script, un sueño

PostPosted: Mon Feb 02, 2015 1:19 am
by Armando
Antonio:

He descargado FiveEdit como lo indicaste, descargue Harbour 3.2 20141218 de Bitbucket,
pruebo FiveEdit con lo anterior más FWH1312 previa configuración para indicar los paths
correcto y no pasa nada al dar clic sobre el botón SCRIPT solo con el botón RUN funciona.

Será que algo me falta ?

Saludos

Re: Crea LIB (xa)Script, un sueño

PostPosted: Mon Feb 02, 2015 6:48 am
by Antonio Linares
Armando,

Al arrancar fivedit te aparece un código por defecto con un MsgInfo().

Primero comprueba que tu configuración de fivedit sea correcta (path de FWH)

Al pulsar "script" ejecutará tu código en memoria.

Yo llevo mucho tiempo insistiendo en que esta es la razón más importante para usar Harbour en vez de xHarbour :-)

Re: Crea LIB (xa)Script, un sueño

PostPosted: Mon Feb 02, 2015 11:14 am
by AngelSalom
Antonio, revisa

Code: Select all  Expand view
oHrb = HB_CompileFromBuf( StrTran( ::oEditor:GetText(), "Main", "__Main" ),;
                             "-n", "-I..\include", "-Ic:\harbour\include" )


Para que coja la carpeta indicada en las preferencias de la aplicación y no c:\harbour\include "a piñón".

Re: Crea LIB (xa)Script, un sueño

PostPosted: Mon Feb 02, 2015 11:16 am
by Antonio Linares
Angel, gracias! :-)

Re: Crea LIB (xa)Script, un sueño

PostPosted: Mon Feb 02, 2015 11:18 am
by Antonio Linares
Cambiado por:

Code: Select all  Expand view
  oHrb = HB_CompileFromBuf( StrTran( ::oEditor:GetText(), "Main", "__Main" ),;
                             "-n", "-I" + AllTrim( ::cFWHPath ) + "\include",;
                             "-I" + AllTrim( ::cHarbPath ) + "\include" )
 

Re: Crea LIB (xa)Script, un sueño

PostPosted: Mon Feb 02, 2015 3:27 pm
by Armando
Antonio:

Wow, ahora sí funca. Voy a revisar el código de FiveEdit para tratar de entender el truco
pero si tú puedes orientarme, te lo voy a agradecer.

Saludos

Re: Crea LIB (xa)Script, un sueño

PostPosted: Mon Feb 02, 2015 8:08 pm
by Armando
Antonio:

Veo que en el siguiente código se efectúa la magia
Code: Select all  Expand view

METHOD RunScript() CLASS TFivedit

   local oHrb, cResult, bOldError

   FReOpen_Stderr( "comp.log", "w" )

   oHrb = HB_CompileFromBuf( StrTran( ::oEditor:GetText(), "Main", "__Main" ),;
                             "-n", "-I" + AllTrim( ::cFWHPath ) + "\include",;
                             "-I" + AllTrim( ::cHarbPath ) + "\include" )

   if "error" $ MemoRead( "comp.log" )
      MsgInfo( MemoRead( "comp.log" ), "Error" )
   else
      if ! Empty( oHrb )
         BEGIN SEQUENCE
         bOldError = ErrorBlock( { | o | DoBreak( o ) } )
         hb_HrbRun( oHrb )
         END SEQUENCE
         ErrorBlock( bOldError )
      endif
   endif
return nil
 


Si entiendo bien se compila el PRG que hay en memoria (HB_CompileFromBuf) y después, si no hay error, se ejecuta
(hb_HrbRun( oHrb )), tengo una aplicación que entre otras cosas necesito que ejecute un script ubicado en alguna
carpeta del disco duro, supongo que debe haber un método para compilar tomando el PRG desde disco, podrías
orientarme?

Saludos

Re: Crea LIB (xa)Script, un sueño

PostPosted: Mon Feb 02, 2015 9:12 pm
by cnavarro
Prueba con MemoRead( cFile )

Re: Crea LIB (xa)Script, un sueño

PostPosted: Mon Feb 02, 2015 9:23 pm
by AngelSalom
Armando, hecha un vistazo a scripts.prg en el directory samples de FWH. Verás un ejemplo totalmente funcional.

Re: Crea LIB (xa)Script, un sueño

PostPosted: Mon Feb 02, 2015 9:28 pm
by mastintin
Lo que no me acaba de gustar del todo, es el tener que colocar en el pc del usuario final las carpetas con los includes tanto de harbour como de fwh . ¿ No se podría empaquetar todos esos archivos dentro de un fichero que se distribuya ? . ¿ algo como una dll ? .
El riesgo de que un usuario final toque un archivo y estropee el programa se multiplica por cada archivo que coloquemos .

Re: Crea LIB (xa)Script, un sueño

PostPosted: Mon Feb 02, 2015 10:24 pm
by Armando
Señores:

A todos, muchas gracias por sus comentarios.

Seguiré lo indicado.

Saludos