Page 1 of 1

Problea con CodeBlock

Posted: Tue Oct 29, 2013 12:31 pm
by antolin
Hola foreros, tengo un problema curioso.

Si hago:

Code: Select all

DEFINE DIALOG [b]oDlg[/b] ......
   ...
   bBlock := { || MSGALERT(oDlg:ClassName() }

   EVAL(bBlock)   // FUNCIONA
   ...
Pero si hago:

Code: Select all

DEFINE DIALOG [b]oDlg[/b] ......
   ...
   cDat  := "{ || MSGALERT(oDlg:ClassName() }"
   bBlock := &( cDat )
   EVAL(bBlock)   // NO FUNCIONA
   ...
El codeblock se evalua, pero me dice que no existe la variable oDlg.
¿Qué estoy haciendo mal?
Gracias de antemano

Un saludo.

Re: Problea con CodeBlock

Posted: Tue Oct 29, 2013 1:46 pm
by Carles
Antolin

Prueba

Code: Select all

cDat := "{|o| Msgalert( o:ClassName() ) }"

bBloc := &( cDat )

eval( bBloc, oDlg )

Re: Problea con CodeBlock

Posted: Tue Oct 29, 2013 3:33 pm
by Lautaro
Antolin,

Disculpa, lo que escribi estaba totalmente fuera de contexto, tu problema es por el scope de las variables, no puedes usar una variable local para componer un bloque de codigo mediante macros.

Atte.,

Lautaro

Re: Problea con CodeBlock

Posted: Tue Oct 29, 2013 3:56 pm
by hmpaquito
:?: :?: :?:

Re: Problea con CodeBlock

Posted: Tue Oct 29, 2013 6:51 pm
by hmpaquito
:?: :?: :?:

Re: Problea con CodeBlock

Posted: Tue Oct 29, 2013 8:28 pm
by Lautaro
HmPaquito,

Me senti tocado por tu aclaracion, la que imagino con buena intencion :) lo que agradezco agradezco y pido disculpas por mi aparente falta de cortesia ( si al releer el como edite el mensaje , en realidad se ve muy descortes ), lo que no fue mi intencion :oops:

Ahora en lo tecnico, el scope tiene mucho que ver, ya que es la visibilidad de las variables lo que afecta la macrocompilacion, ya que las variables locales NO SON VISIBLES para las MACROS, como es el caso de las construcciones :

Code: Select all

...
local xvar1
...
...
 cbloque := "{|| msgalert(xvar1,'contenido variable xvar1'}"

 bbloque := &( cbloque )

 
Si estoy equivocado, por favor corrijanme :!: :!: :!:

Saludos,

Lautaro

Re: Problema con CodeBlock

Posted: Wed Oct 30, 2013 7:37 am
by antolin
Gracias por vuestra prompta respuesta.

Algo tengo que estar haciendo mal porque sigue sin funcionarme. Además, para empezar, no puedo inicializar la variable, desde fuera de la función, con PRIVATE, me dice: " Statement not allowed outside of procedure o function ". Y si la inicializo dentro de la función con PRIVATE, no me la ve, como si no existiera " Ambiguous reference 'oDlg' ".

Re: Problea con CodeBlock

Posted: Wed Oct 30, 2013 8:44 am
by hmpaquito
:?: :?: :?:

Re: Problema con CodeBlock

Posted: Wed Oct 30, 2013 8:58 am
by hmpaquito
:?: :?: :?:

Re: Problea con CodeBlock

Posted: Wed Oct 30, 2013 9:56 am
by antolin
Muchas gracias a todos.

Ya he solucionado mi problema con otra estructuración y ya no necesito ese codeblock. Así que no me voy a calentar la cabeza y la próxima vez que me surja este tema ya me dedicaré más de lleno a ello. La verdad es que llevo muchos años utilizando codeblocks sin ningún tipo de problemas y no creo que éste vuelva a salir hasta dentro de otros muchos años.

De todas maneras muchas gracias por vuestra dedicación.

Un saludo.