Page 1 of 2

Ejecutar con un bloque de código una instrucción

PostPosted: Thu Feb 25, 2016 1:42 am
by daniv096
buenas tarde estoy haciendo una instruccion en bloque de codigo para que me lleve a una funcion o proceso y que en ella me retorne la funcion y dentro de ella lleve un campo logico y una instrucion de query y me da un error de que no existe la variable del query de ante manos gracias por la ayuda esta es la instrucion


ctext:=MOD_PROVEE(lNew:=.T.,oCursor)

ejecuto el bloque de codigo

bBlq:=&("{||+"+ALLTRIM(cText)+"}")
eval(bBlq)

y me da el siguiente error : "No existe la variable oCursor" oCursor contiene un query y esta declarada en el fuente

Re: Ejecutar con un bloque de código una instrucción

PostPosted: Thu Feb 25, 2016 7:42 am
by Antonio Linares
la variable tiene que ser public o private para que puedas usarla asi

Re: Ejecutar con un bloque de código una instrucción

PostPosted: Thu Feb 25, 2016 7:43 am
by Antonio Linares
Otra opción es que la pases como parámetro al hacer el eval()

bBlq:=&("{| o |+"+ALLTRIM(cText)+"}")
eval(bBlq, oQuery )

y que cText use el parámetro o

Re: Ejecutar con un bloque de código una instrucción

PostPosted: Thu Feb 25, 2016 7:49 am
by daniv096
Gracias Antonio

los que hice fue crear el query publico y listo el bloque de código lo ejecuto perfectamente otra pregunta como puedo adquirí la nueva versión de fwh

Re: Ejecutar con un bloque de código una instrucción

PostPosted: Thu Feb 25, 2016 10:21 am
by Antonio Linares
Puedes comprarla directamente desde www.fivetechsoft.com

gracias!

Re: Ejecutar con un bloque de código una instrucción

PostPosted: Fri Feb 26, 2016 5:28 pm
by daniv096
Antonio

disculpa el fastidio quisiera saber si se puede ejecutar un archivo HRB con xharbour cual seria la instrucción o hay otra ejecución que se pueda llamar un script externo yo uso fivewin con xharbour y bbc 582 gracias de ante mano

Re: Ejecutar con un bloque de código una instrucción

PostPosted: Fri Feb 26, 2016 7:46 pm
by Antonio Linares
No tengo experiencia usando ficheros HRB con xHarbour pero Enrico ha localizado
estas funciones que puedes probar:

__HRBRUN( <cFile> [, xParam1 [, xParamN ] ] ) -> xReturn
Execute specified hrb file, passing optional paramaters.

__HRBLOAD( <cFile> ) -> nHandle
Load an hrb file and return a Handle.

__HRBDO( <nHandle> )
Execute previously loaded hrb module specified by it's Handle.

__HRBUNLOAD( <nHandle> )
Unload an hrb module.

__HRBGETFU( <nHandle>, <cFuncName> ) -> nHandle
Retrieve Handle to specified function in a given preloaded hrb module.

__HRBDOFU( <nHandle>, [xParam1 [, xParamN] ] ) -> xReturn
Execute specified function by its handle, passing optional paramaters.

Re: Ejecutar con un bloque de código una instrucción

PostPosted: Fri Feb 26, 2016 8:32 pm
by daniv096
Antonio

Yo he probado esas funcionalidades pero no me han funcionado sera que habrá que colocarle algún include o falta alguna librería tendrás algún ejemplo funcional?

Re: Ejecutar con un bloque de código una instrucción

PostPosted: Sat Feb 27, 2016 1:25 am
by xmanuel
No sé porque tienes que "macrocompilar" en esta situación.
Yo lo haría así:

Code: Select all  Expand view

local bBlq:={|c|ALLTRIM(c)} // Así lo compila el compilador una unica vez sin necesidad de macros
...
ctext:=MOD_PROVEE(lNew:=.T.,oCursor)
...
//ejecuto el bloque de codigo
eval(bBlq, cText)

 

Re: Ejecutar con un bloque de código una instrucción

PostPosted: Sat Feb 27, 2016 3:43 pm
by daniv096
Antonio

esta es el error que me da al usar __HRBRUN()


Compiler version: xHarbour build 1.2.1 Intl. (SimpLex) (Rev. 9325)
FiveWin Version: FWHX 12.04

Time from start: 0 hours 0 mins 8 secs
Error occurred at: 27/02/2016, 11:10:52
Error description: Error BASE/9999 Se detect¢ corrupci¢n: Incompatible HRB version

Stack Calls
===========
Called from: => __HRBRUN( 0 )

Re: Ejecutar con un bloque de código una instrucción

PostPosted: Sat Feb 27, 2016 8:37 pm
by Antonio Linares
El fichero HRB lo has creado con esa misma versión de xHarbour ?

Re: Ejecutar con un bloque de código una instrucción

PostPosted: Sat Feb 27, 2016 8:49 pm
by daniv096
ANTONIO

Si me di cuenta que no era la misma versión ya lo corregí gracias otra cosa puedo correr en memoria un archivo "PPO" dentro de mi ejecutable

Re: Ejecutar con un bloque de código una instrucción

PostPosted: Sun Feb 28, 2016 2:04 am
by daniv096
Antonio

Ya logre convertir mi programa de xharbou a harbour lo compilo y me da este unico error:

Error: Unresolved external '_hb_gcAlloc' referenced from C:\Harbour\LIB\WIN\BCC\DOLPHIN.LIB|function
Error: Unresolved external '_hb_retclenAdopt' referenced from C:\Harbour\LIB\WIN\BCC\DOLPHIN.LIB|function

Re: Ejecutar con un bloque de código una instrucción

PostPosted: Sun Feb 28, 2016 7:44 am
by Antonio Linares
Prueba a cambiar hb_gcAlloc() por hb_xgrab() y hb_retclenAdopt() por hb_retclen() en los fuentes de Dolphin

Re: Ejecutar con un bloque de código una instrucción

PostPosted: Sun Feb 28, 2016 7:50 am
by daniv096
Antonio

Soy ignorante en eso donde los busco porque yo uso "Tdolphin.ch" "dolerr.ch" y dolphin.lib no uso el fuente porque con xharbour me funcionaba perfecto