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
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.