Codeblock a string

Codeblock a string

Postby mastintin » Mon Jan 02, 2012 3:59 pm

Necesito guardar un codeblock en una variable , pero en formato string.

bblock:= {|| msginfo("hola") }

usar una function algo asi como blcktostr(bblock ) que devuelva : ' {|| msginfo("hola") } '

existe alguna funcion ?

Saludos a todos.
User avatar
mastintin
 
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm

Re: Codeblock a string

Postby hmpaquito » Mon Jan 02, 2012 5:16 pm

Mastintin,

Creo que eso que buscas no existe... los codeblocks son codigo compilado... otra cosa es que el genial przemek haya inventado algo...
Un invento que quiza te podria ayudar; se trataria de crear un nuevo tipo K que en realidad es un array:

#Translate CBNew(<b>) => {<b>, <(b)>}
#Translate CBEval(<kCB>) => Eval(<kCB>\[1\])
#Translate CBString(<kCB>) => <kCB>\[2\]

Ejemplos

k:= CBNew({|| MsgInfo("probando...")})
? CBEval(k)
? CBString(k)

Espero te pueda servir.
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: Codeblock a string

Postby mastintin » Mon Jan 02, 2012 5:51 pm

hmpaquito wrote:Mastintin,

Creo que eso que buscas no existe... los codeblocks son codigo compilado... otra cosa es que el genial przemek haya inventado algo...
Un invento que quiza te podria ayudar; se trataria de crear un nuevo tipo K que en realidad es un array:

#Translate CBNew(<b>) => {<b>, <(b)>}
#Translate CBEval(<kCB>) => Eval(<kCB>\[1\])
#Translate CBString(<kCB>) => <kCB>\[2\]

Ejemplos

k:= CBNew({|| MsgInfo("probando...")})
? CBEval(k)
? CBString(k)

Espero te pueda servir.


Pues Casi ,pero no sirve.
Se trata de por ejemplo :

oDlg:bpaint := {|| msginfo("algo") }


y en la clase tdlg en cGenprg()

if !Empty(::bpainted)
cPrg += CRLF + ' oWnd:bpainted:= " '+ blocktostr(::bpainted)+' " ' +CRLF
endif

o algo similar ....
User avatar
mastintin
 
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm

Re: Codeblock a string

Postby hmpaquito » Mon Jan 02, 2012 6:44 pm

Entiendo que si no quieres modificar las clases originales de fwh o bien no quieres utilizar un pseudo tipo, la cosa no tiene arreglo...

Para el caso que dices, yo lo que haria seria:

#Define CBBlock(<k>) <k>\[1\]
1º A la clase dialog, crearle una nueva data: bkPainted
2º En la definicion previa del dialogo ::bkPainted:= CBNew({|| MsgInfo("algo")})
3º En el Activate del dialog asignar ::bPainted:= CBBlock(::bkPainted)
4º En el cGenPrg cPrg += CRLF + ' oWnd:bpainted:= " '+ CBString(::bkPainted)+' " ' +CRLF

Saludos
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: Codeblock a string

Postby mastintin » Mon Jan 02, 2012 6:51 pm

hmpaquito wrote:Entiendo que si no quieres modificar las clases originales de fwh o bien no quieres utilizar un pseudo tipo, la cosa no tiene arreglo...

Para el caso que dices, yo lo que haria seria:

#Define CBBlock(<k>) <k>\[1\]
1º A la clase dialog, crearle una nueva data: bkPainted
2º En la definicion previa del dialogo ::bkPainted:= CBNew({|| MsgInfo("algo")})
3º En el Activate del dialog asignar ::bPainted:= CBBlock(::bkPainted)
4º En el cGenPrg cPrg += CRLF + ' oWnd:bpainted:= " '+ CBString(::bkPainted)+' " ' +CRLF

Saludos


Aun mas simple , una nueva data cbpainted en la clase twindows donde guardo "el literar " del codeblock ( CBString(::bkPainted) ) y asunto solucionado , pero saber si existia alguna fucion tipo HB_serialicer o algo asi .
Muchas gracias por la respuesta , me ha sido de utilidad, le volvere a dar otra vuelta de cabeza.
User avatar
mastintin
 
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 9 guests