Codeblock para String, tem como? - Harbour
Moderador: Moderadores
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Codeblock para String, tem como? - Harbour
Dessas funções só conseguí testar a HB_Deserialize() mas obteve retorno vazio (2 espaços). Talvez porque sejam para xHarbour.
Lamentavelmente ainda fico sem ler os codeblocks dessa matriz.
Lamentavelmente ainda fico sem ler os codeblocks dessa matriz.
Um clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Codeblock para String, tem como? - Harbour
Puxa Pablo,
Exemplo:
Pablo essa é para ti...

Pablo César escreveu:KKK ahhh você me faz rir Leonado... você sempre apressado... nem viu que era eu quem estava perguntando. Eu só aproveitei o tópico que tratava do mesmo assunto, mas o tópico é de 2005, hihihihi
Sei lá o que você fez ai, mas fiz um teste rapido aqui com uma função do clipper mesmo e me mostrou um monte de CHR() que é assim mesmo que ele guarda o CODE, no meu caso aqui eu guardo o CODEBLOCK do ACTION dos MENUS para ser executados nos atalhos que são criado em tempo de execução em Hwgui + xHarbour.Mas obrigado Leonardo, serviu para pesquisar sobre mensagens relacionadas. Mas com o ValtoPrg não funcionou como esperado. Compilar em HMG 3.0.35 ele vai mas o retorno deu vazio lendo a matriz e em outra tentativa deu erro Warning/0 ao executar o seu exemplo:
Exemplo:
Código: Selecionar todos
bBloco = { || max(10,8) }
cSTRING_BLOCK:=valtoprg(bBloco)Pablo essa é para ti...
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Codeblock para String, tem como? - Harbour
kkkkkk, essa da pá de ouro foi poruqe desenterrei o tópico ? Ahhh sei lá, primeiro pesquisei pra ver se tinha algo sobre o tema...
Vou deixar pra amanhã, eu queria ver os codesblocks mas não está dando... acho que em xHarbour deve funcionar direitinho, ja ví mensagens na internet falando que não funciona corretamente em Harbour...
Tem certeza que fizestes em Clipper ? Acho que não, eihn ?Sei lá o que você fez ai, mas fiz um teste rapido aqui com uma função do clipper mesmo e me mostrou um monte de CHR()
Vou deixar pra amanhã, eu queria ver os codesblocks mas não está dando... acho que em xHarbour deve funcionar direitinho, ja ví mensagens na internet falando que não funciona corretamente em Harbour...
Um clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Codeblock para String, tem como? - Harbour
Aos Mestres,
Isto é possível?
bBloco = "{ || Funcao() }"
MsgInfo(HB_ValToStr(bBloco))
EVAL(&bbloco)
Função ValToPrg
Isto é possível?
bBloco = "{ || Funcao() }"
MsgInfo(HB_ValToStr(bBloco))
EVAL(&bbloco)
Função ValToPrg
Código: Selecionar todos
FUNCTION ValToPrg( xValue )
LOCAL cType := ValType( xValue )
DO CASE
CASE cType == "C"
xValue := StrTran( xValue, Chr(0), '"+Chr(0)+"' )
xValue := StrTran( xValue, Chr(9), '"+Chr(9)+"' )
xValue := StrTran( xValue, Chr(10), '"+Chr(10)+"' )
xValue := StrTran( xValue, Chr(13), '"+Chr(13)+"' )
xValue := StrTran( xValue, Chr(26), '"+Chr(26)+"' )
RETURN '"' + xValue + '"'
CASE cType == "N" ; RETURN LTrim( Str( xValue ) )
CASE cType == "D" ; RETURN 'HB_SToD("' + DToS( xValue ) + '")'
CASE cType == "L" ; RETURN iif( xValue, ".T.", ".F." )
CASE cType == "O" ; RETURN xValue:className() + " Object"
CASE cType == "U" ; RETURN "NIL"
CASE cType == "B" ; RETURN '{||...}'
CASE cType == "A" ; RETURN '{.[' + LTrim( Str( Len( xValue ) ) ) + '].}'
CASE cType == "M" ; RETURN 'M:"' + xValue + '"'
ENDCASE
RETURN ""
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Codeblock para String, tem como? - Harbour
Se inserir um MsgInfo(ValType(bBloco)) depois da linha bBloco = "{ || Funcao() }" verá que na tela irá aparecer "C" que é do tipo caracter, não do tipo "B" bloco. ATé agora sem solução.Isto é possível?
bBloco = "{ || Funcao() }"
MsgInfo(HB_ValToStr(bBloco))
EVAL(&bbloco)
Um clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Codeblock para String, tem como? - Harbour
Eu não disse que compilei em Clipper, eu disse que fiz um teste usando uma função do CLIPPER olhe o exemplo que postei. Só que uso xHarbour, mas no Harbour deve dar certo do mesmo jeito é tudo a mesma M.....
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Codeblock para String, tem como? - Harbour
Nossa gente ! Vim aqui correndo para compartilhar a minha mais recente conquista. Justamente o que eu vinha precisando e estudando há muito tempo este caso. Vim em consideração a muitos amigos daqui, principalmente a Rossine que é muito atenciosa comigo.
Por falar em Rossine, você é mulher não é Rossine ? Desculpe, senão for... pois o seu nick pode ser um sobrenome... rs Você é muito inteligente e obrigado pela atenção e de muitos aqui que são verdadeiros amigos.
Tenho muita consideração com esta comunidade, que deu-me muitas alegrias porque a benevolência do benemérito Paulo César Toledo, grande jóia do nosso querido Brasil e da nossa comunidade xBase, ele é inigualável. Muito sucesso para ti Toledo, você é o cara !
Então voltando ao assunto...
Neste tópico (desculpe estar em espanhol) mas acho que dá pra entender. Explico as minhas razões deste meu novo projeto que espero que ajude a todo que utilizam arquivos fmg.
A ideia é recuperar o conteúdo de um codeblock. Mas a jogada está, que antes de formar o codeblock seja feito como string. Neste no meu caso, eu tive que ler o arquivo fmg linha a linha (o que é caracterizado como string) e antes de ser lido pelo hb_compileFromBuf e ser transformado em atribuição de variável/array a função que continha eu havia colocado entre aspas. Depois foi só colocar := Eval(xVal) que retorna string. E se depois for necessário (é claro que sempre é), utilizar o codeblock, daí é só utilizar o macro para executá-la como comando.
Um grande abraço aqueles que sempre são dispostos a ajudar as pessoas.
Por falar em Rossine, você é mulher não é Rossine ? Desculpe, senão for... pois o seu nick pode ser um sobrenome... rs Você é muito inteligente e obrigado pela atenção e de muitos aqui que são verdadeiros amigos.
Tenho muita consideração com esta comunidade, que deu-me muitas alegrias porque a benevolência do benemérito Paulo César Toledo, grande jóia do nosso querido Brasil e da nossa comunidade xBase, ele é inigualável. Muito sucesso para ti Toledo, você é o cara !
Então voltando ao assunto...
Neste tópico (desculpe estar em espanhol) mas acho que dá pra entender. Explico as minhas razões deste meu novo projeto que espero que ajude a todo que utilizam arquivos fmg.
A ideia é recuperar o conteúdo de um codeblock. Mas a jogada está, que antes de formar o codeblock seja feito como string. Neste no meu caso, eu tive que ler o arquivo fmg linha a linha (o que é caracterizado como string) e antes de ser lido pelo hb_compileFromBuf e ser transformado em atribuição de variável/array a função que continha eu havia colocado entre aspas. Depois foi só colocar := Eval(xVal) que retorna string. E se depois for necessário (é claro que sempre é), utilizar o codeblock, daí é só utilizar o macro para executá-la como comando.
Um grande abraço aqueles que sempre são dispostos a ajudar as pessoas.
Um clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Codeblock para String, tem como? - Harbour
Olá pablo,
Abaixo tem uma solução paleativa para retornar codeblock em string. Veja se serve para você ok ?
Precisando estamos aqui,
Abraço,
Rossine.
Abaixo tem uma solução paleativa para retornar codeblock em string. Veja se serve para você ok ?
Código: Selecionar todos
#Translate CBNew(<b>) => { <b>, <(b)> }
#Translate CBEval(<b>) => eval( <b>\[1\] )
#Translate CBString(<b>) => <b>\[2\]
*************
function MAIN
*************
local bCod1 := CBNew( { || MINHA_FUNC("Teste") } )
local bCod2 := CBNew( { || MINHA_FUNC(12) } )
local bCod3 := CBNew( { || MINHA_FUNC("Teste") } )
local bCod4 := CBNew( { || nCtd += 1, npar2 -=1, npar3 +=10 } )
private nCtd := 0, npar2 := 0, npar3 := 0
cls
? "-CBEval-"
? CBEval( bCod1 )
? "---"
? CBEval( bCod2 )
? "---"
? CBEval( bCod3 )
? "---"
? CBEval( bCod4 )
? "---"
? "-CBString-"
? CBString( bCod1 )
? "---"
? CBString( bCod2 )
? "---"
? CBString( bCod3 )
? "---"
? CBString( bCod4 )
? "---"
return NIL
****************
function MsgInfo( cMsg )
****************
? cMsg
return NIL
*******************
function MINHA_FUNC( uDesc )
*******************
? valtype(uDesc), uDesc
return uDesc
Não amiguinho, joy soy macho heheheh. Me parece que no sul do brasil tem muita mulher com este nome/sobrenome e as vezes o pessoal confundi mesmo. hehehe No problem...Por falar em Rossine, você é mulher não é Rossine ? Desculpe, senão for... pois o seu nick pode ser um sobrenome... rs Você é muito inteligente e obrigado pela atenção e de muitos aqui que são verdadeiros amigos.
Precisando estamos aqui,
Abraço,
Rossine.
Rossine.
Harbour 3.4, MingW / Msvc, QT, Qt5xhb, GtQtc, DbfCdx, MySql/MariaDB.
Harbour 3.4, MingW / Msvc, QT, Qt5xhb, GtQtc, DbfCdx, MySql/MariaDB.
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Codeblock para String, tem como? - Harbour
Exemplo perfeito, Rossine !
Ficou muito claro que fazer pelo translate fica muito mais simplificado e funcional.
Valeu pelo seu exemplo, muito didático.
E muito obrigado pela sua contribuição !
:{ :)Pos
P.S. Ahhh se não se importarem, irei postar o seu exemplo lá no fórum HMG também.
Ficou muito claro que fazer pelo translate fica muito mais simplificado e funcional.
Valeu pelo seu exemplo, muito didático.
Caramba ! Foi mals então, ainda bem que pedi desculpas antecipadamente...rossine escreveu:Não amiguinho, joy soy macho heheheh
E muito obrigado pela sua contribuição !
:{ :)Pos
P.S. Ahhh se não se importarem, irei postar o seu exemplo lá no fórum HMG também.
Um clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.

