Page 1 of 1

Ayuda para: codeblock que no se evalúa.

PostPosted: Fri Jul 30, 2010 7:33 am
by fernandomoralesdr
Hola.
Lo que pongo a continuación me funciona en FW195 pero no en FW+Harbour.

GET nNumero PICTURE "99"
...
cFuncion := "Funcion" + strzero(nNumero)

eval({||cFuncion})

Lo que hago es tener una serie de funciones definidas (Funcion01(), Funcion02(), Funcion03()...) y en base al código que da el usuario se ejecuta la que corresponda.
Alguna aclaración al respecto.
Gracias y un saludo,
Fernando Morales
Las Palmas de Gran Canaria

Re: Ayuda para: codeblock que no se evalúa.

PostPosted: Fri Jul 30, 2010 9:17 am
by Antonio Linares
Prueba asi:

cFuncion := "Funcion" + strzero(nNumero) + "()"

eval( {|| &cFuncion } )

Re: Ayuda para: codeblock que no se evalúa.

PostPosted: Fri Jul 30, 2010 12:59 pm
by fernandomoralesdr
Antonio, errores al compilar:

Error E0047 Code block contains both macro and declared symbol references 'NFUNCION'

Esta es la definición en el programa
REDEFINE BUTTON oBtn1 ID 991 OF oDlg ;
ACTION ( cFuncion := "Funcion" + strzero(nFuncion) + "()",;
eval({||&cFuncion}) )

Re: Ayuda para: codeblock que no se evalúa.

PostPosted: Fri Jul 30, 2010 7:50 pm
by FranciscoA
Prueba de esta manera:

bFuncion :={|| "Funcion" + strzero(nNumero) }

eval( bFuncion )

Re: Ayuda para: codeblock que no se evalúa.

PostPosted: Fri Jul 30, 2010 9:08 pm
by Antonio Linares
Fernando,

No declares cFuncion como "local", para que asi se declare publica por defecto, y cambia "Funcion" por "Function":

cFuncion := "Function" + strzero( nNumero ) + "()"