Clipper On Line • Ver Tópico - Codeblock para String, tem como? - Harbour

Codeblock para String, tem como? - Harbour

Projeto Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

 

Codeblock para String, tem como? - Harbour

Mensagempor Pablo César » 09 Mai 2011 19:55

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.
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.
Avatar de usuário

Pablo César
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 5312
Data de registro: 31 Mai 2006 10:22
Cidade/Estado: Curitiba - Paraná
Curtiu: 142 vezes
Mens.Curtidas: 152 vezes

Codeblock para String, tem como? - Harbour

Mensagempor sygecom » 09 Mai 2011 21:51

Puxa Pablo,
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


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:

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.

Exemplo:
bBloco = { || max(10,8) }
cSTRING_BLOCK:=valtoprg(bBloco)


Pablo essa é para ti...
Imagem
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
leonardodemachado@hotmail.com

Faça você também sua doação esse fórum é uma lenda viva: http://www.pctoledo.com.br/doacao
Avatar de usuário

sygecom
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 7005
Data de registro: 21 Jul 2006 10:12
Cidade/Estado: Alvorada-RS
Curtiu: 1 vez
Mens.Curtidas: 130 vezes

Codeblock para String, tem como? - Harbour

Mensagempor Pablo César » 09 Mai 2011 22:02

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...
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()
Tem certeza que fizestes em Clipper ? Acho que não, eihn ?

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.
Avatar de usuário

Pablo César
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 5312
Data de registro: 31 Mai 2006 10:22
Cidade/Estado: Curitiba - Paraná
Curtiu: 142 vezes
Mens.Curtidas: 152 vezes

Codeblock para String, tem como? - Harbour

Mensagempor asimoes » 09 Mai 2011 22:20

Aos Mestres,

Isto é possível?

bBloco = "{ || Funcao() }"
MsgInfo(HB_ValToStr(bBloco))
EVAL(&bbloco)

Função ValToPrg
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)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Codeblock para String, tem como? - Harbour

Mensagempor Pablo César » 10 Mai 2011 14:15

Isto é possível?

bBloco = "{ || Funcao() }"
MsgInfo(HB_ValToStr(bBloco))
EVAL(&bbloco)
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.
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.
Avatar de usuário

Pablo César
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 5312
Data de registro: 31 Mai 2006 10:22
Cidade/Estado: Curitiba - Paraná
Curtiu: 142 vezes
Mens.Curtidas: 152 vezes

Codeblock para String, tem como? - Harbour

Mensagempor sygecom » 10 Mai 2011 15:04

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
leonardodemachado@hotmail.com

Faça você também sua doação esse fórum é uma lenda viva: http://www.pctoledo.com.br/doacao
Avatar de usuário

sygecom
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 7005
Data de registro: 21 Jul 2006 10:12
Cidade/Estado: Alvorada-RS
Curtiu: 1 vez
Mens.Curtidas: 130 vezes

Codeblock para String, tem como? - Harbour

Mensagempor Pablo César » 07 Mai 2014 19:40

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. :)
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.
Avatar de usuário

Pablo César
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 5312
Data de registro: 31 Mai 2006 10:22
Cidade/Estado: Curitiba - Paraná
Curtiu: 142 vezes
Mens.Curtidas: 152 vezes

Codeblock para String, tem como? - Harbour

Mensagempor rossine » 08 Mai 2014 02:57

Olá pablo,

Abaixo tem uma solução paleativa para retornar codeblock em string. Veja se serve para você ok ?

#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


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.


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

Precisando estamos aqui,

Abraço,

Rossine.
Rossine.

Harbour 3.4, MingW / Msvc, QT, Qt5xhb, GtQtc, DbfCdx, MySql/MariaDB.
rossine
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 313
Data de registro: 06 Ago 2007 09:57
Cidade/Estado: Divinópolis-MG
Curtiu: 1 vez
Mens.Curtidas: 21 vezes

Codeblock para String, tem como? - Harbour

Mensagempor Pablo César » 08 Mai 2014 10:11

Exemplo perfeito, Rossine !

Ficou muito claro que fazer pelo translate fica muito mais simplificado e funcional.

Valeu pelo seu exemplo, muito didático.

rossine escreveu:Não amiguinho, joy soy macho heheheh
Caramba ! Foi mals então, ainda bem que pedi desculpas antecipadamente... Imagem

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.
Avatar de usuário

Pablo César
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 5312
Data de registro: 31 Mai 2006 10:22
Cidade/Estado: Curitiba - Paraná
Curtiu: 142 vezes
Mens.Curtidas: 152 vezes

Anterior



Retornar para Harbour

Quem está online

Usuários vendo este fórum: Bing [Bot] e 5 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro