Como incluir transformar uma String em Hash?

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

Moderador: Moderadores

Avatar do usuário
clodoaldomonteiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 821
Registrado em: 30 Dez 2006 13:17
Localização: Teresina-PI
Contato:

Como incluir transformar uma String em Hash?

Mensagem por clodoaldomonteiro »

Olá,
Usando xHarbour,

Estou usando a função ValToPrg( <xVar> ) para converter um valor de uma Hash em String e a guardo num Field tipo Caractere da minha tabela.

Queria saber se tem alguma função para fazer o inverso, pego o campo caractere como string e o converto em Hash, e assim eu poder variar qualquer Key do Hash?

Grato pela ajuda

String com as chaves e valores Hash:

Código: Selecionar todos

{ "BaseCalculoIrrfNormal" =>       1320.00, 
"BaseCalculoIrrfSimplificado" =>          0.00, 
"DeducaoInativo65Anos" =>          0.00, 
"ValorAliquotaIRRF" =>          0.00, 
"ValorDeducaoIRRF" =>          0.00, 
"ValorDescPrevidencia" =>          0.00, 
"ValorIRRFLancado" =>          0.00, 
"ValorIRRFPago" =>          0.00, 
"ValorVerbasDeducoes" =>          0.00, 
"ValorVerbasIncidentes" =>       1320.00, 
"qtdDependenteIR" =>  0, 
"valorDeduzirIRSimplificado" =>         0.00, 
"valorPorDependenteIR" =>       189.59 }
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Avatar do usuário
clodoaldomonteiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 821
Registrado em: 30 Dez 2006 13:17
Localização: Teresina-PI
Contato:

Como incluir transformar uma String em Hash?

Mensagem por clodoaldomonteiro »

Terminei por fazer uma Function pra ler a String com um valor Hash e retornar para uma variável Type Hash.

Código: Selecionar todos

   /////////////////////////////////////////////////////////////////////////////
   //Pega uma String HASH e transforma em variável Hash
Function StringToHash( cString )
   Local result := {=>}, aVar, i
   
   cString := Trim( cString )
   aVar := HB_ATokens( cString, "," )
   
   For i := 1 To Len( aVar )
      x := HB_ATokens( aVar[i], "=" )
      result[ AllTrim(StrTran( x[1], '"', '' )) ] := Val(StrTran( x[2], '>', ''))
   Next
   
   Return result
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Avatar do usuário
Wanderlei
Usuário Nível 3
Usuário Nível 3
Mensagens: 196
Registrado em: 25 Jan 2008 13:19
Localização: Goiânia - GO

Como incluir transformar uma String em Hash?

Mensagem por Wanderlei »

Oi Clodoaldo,
Eu utilizo assim:

aRetorno := hash() //Cria o vetor vazio
aRespSM['OK'] := .F. //Cria o OK e coloca falso nele
aRespSM['MsgErro'] := 'SEM INTERNET' //Cria a tag do erro e coloca a mensagem padrão
Wanderlei Cardoso
Analista / Programador
XHarbour + GtWvW + FiveWin + HwGui + Firebird
Skype: cwanderlei
cwanderlei@yahoo.com.br
(62)98171-3059 - whatsapp

Imagem
Avatar do usuário
clodoaldomonteiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 821
Registrado em: 30 Dez 2006 13:17
Localização: Teresina-PI
Contato:

Como incluir transformar uma String em Hash?

Mensagem por clodoaldomonteiro »

Wanderlei escreveu:Oi Clodoaldo,
Eu utilizo assim:

aRetorno := hash() //Cria o vetor vazio
aRespSM['OK'] := .F. //Cria o OK e coloca falso nele
aRespSM['MsgErro'] := 'SEM INTERNET' //Cria a tag do erro e coloca a mensagem padrão
Bom dia,
Como mencionei acima, guardo os valores da Hash em uma tabela, em um campo Memo, para que mais tarde eu possa utilizá-lo em outros processamentos.
Sabemos que na estrutura DBF, temos somente 5 tipos de Fields, Caractere, Numérico, Lógico, Date e Memo (Text), não é como os outros SGDBs que tem uma infinidade de tipos, é onde temos que usar as funções para que venha de uma forma rápida e segura fazer a transformação dos dados.

Grato pela ajuda.
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Responder