Página 1 de 1

Como incluir transformar uma String em Hash?

Enviado: 11 Jul 2023 13:51
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 }

Como incluir transformar uma String em Hash?

Enviado: 11 Jul 2023 14:53
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

Como incluir transformar uma String em Hash?

Enviado: 12 Jul 2023 07:25
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

Como incluir transformar uma String em Hash?

Enviado: 12 Jul 2023 08:19
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.