Página 1 de 1
Por que a Table Hash ordena as chaves?
Enviado: 11 Jul 2023 10:22
por clodoaldomonteiro
Bom dia amigos.
Estou usando o Hash() para um pequeno projeto e vi que crio passar as chaves numa determinada ordem, mas quando faço um For ... Next ou visualizo o Hash com ValToPrg(), as chaves estão ordenadas por ordem alfabética.
Pergunto se existe alguma possibilidade de setar para que permaneça a ordem de criação da variável Hash?
Criando a Hash:
Código: Selecionar todos
Private hIrMemo := Hash(;
'ValorVerbasIncidentes', 0.00,;
'ValorVerbasDeducoes' , 0.00,;
'ValorDescPrevidencia' , 0.00,;
'qtdDependenteIR' , 0.00,;
'valorPorDependenteIR' , 0.00,;
'DeducaoInativo65Anos' , 0.00,;
'BaseCalculoIrrfNormal', 0.00,;
'valorDeduzirIRSimplificado' , 0.00,;
'BaseCalculoIrrfSimplificado', 0.00,;
'ValorAliquotaIRRF' , 0.00,;
'ValorDeducaoIRRF' , 0.00,;
'ValorIRRFPago' , 0.00,;
'ValorIRRFLancado' , 0.00;
)
Resultado ordenado (depois de transformar em JSON):
Código: Selecionar todos
{
"BaseCalculoIrrfNormal": 4201.37,
"BaseCalculoIrrfSimplificado": 0.00,
"DeducaoInativo65Anos": 0.00,
"ValorAliquotaIRRF": 22.50,
"ValorDeducaoIRRF": 651.73,
"ValorDescPrevidencia": 469.05,
"ValorIRRFLancado": 293.57,
"ValorIRRFPago": 0.00,
"ValorVerbasDeducoes": 0.00,
"ValorVerbasIncidentes": 4670.42,
"qtdDependenteIR": 0,
"valorDeduzirIRSimplificado": 0.00,
"valorPorDependenteIR": 189.59
}
Grato pela ajuda.
Por que a Table Hash ordena as chaves?
Enviado: 11 Jul 2023 11:58
por Ana Mitoooo
Código: Selecionar todos
Private hIrMemo
M->hIrMemo := hb_Hash()
hb_hKeepOrder( M->hIrMemo, .t. )
Por que a Table Hash ordena as chaves?
Enviado: 11 Jul 2023 13:03
por clodoaldomonteiro
Ana Mitoooo escreveu:Código: Selecionar todos
Private hIrMemo
M->hIrMemo := hb_Hash()
hb_hKeepOrder( M->hIrMemo, .t. )
Fico grato pela ajuda, mas esqueci de falar que é pra xHarbour e não funcionou, ou não estou informando a Lib com estas funções.
Por que a Table Hash ordena as chaves?
Enviado: 11 Jul 2023 13:03
por Itamar M. Lins Jr.
Olá!
Código: Selecionar todos
HB_HSORT()
Reorganizes the internal list of the hash table to be sorted
Syntax
HB_HSORT( <hsTable> ) -> <hsSortedTable>
Arguments
<hsTable> a hash table, created by HB_HASH()
Returns
Funções hb_h* geralmente para HASH
HBMK2 -find hb_h
Saudações,
Itamar M. Lins Jr.
Por que a Table Hash ordena as chaves?
Enviado: 11 Jul 2023 13:05
por Itamar M. Lins Jr.
Olá!
Código: Selecionar todos
C:\dev\hb32-code>HBMK2 -find hb_h
hbhpdf.hbc (instalado):
hb_HPDF_GetErrorString()
hb_HPDF_IsVersion()
hb_HPDF_Version()
xhb.hbc (instalado):
hb_HashAddMember()
hb_HashId()
xhb_HashError()
Núcleo Harbour (instalado):
hb_HAllocate()
hb_Hash()
hb_HAutoAdd()
hb_HBinary()
hb_HCaseMatch()
hb_HClear()
hb_HClone()
hb_HCopy()
hb_HDefault()
hb_HDel()
hb_HDelAt()
hb_HEval()
hb_HexToNum()
hb_HexToStr()
hb_HFill()
hb_HGet()
hb_HGetDef()
hb_HGetRef()
hb_HHasKey()
hb_HKeepOrder()
hb_HKeyAt()
hb_HKeys()
hb_HMAC_MD5()
hb_HMAC_SHA1()
hb_HMAC_SHA224()
hb_HMAC_SHA256()
hb_HMAC_SHA384()
hb_HMAC_SHA512()
hb_HMerge()
hb_Hour()
hb_HPairAt()
hb_HPos()
hb_hrbDo()
hb_hrbGetFunList()
hb_hrbGetFunSym()
hb_hrbLoad()
hb_hrbRun()
hb_hrbSignature()
hb_hrbUnload()
hb_HScan()
hb_HSet()
hb_HSetAutoAdd()
hb_HSetBinary()
hb_HSetCaseMatch()
hb_HSetDef()
hb_HSetOrder()
hb_HSort()
hb_HValueAt()
hb_HValues()
C:\dev\hb32-code>
Saudações,
Itamar M. Lins Jr.
Por que a Table Hash ordena as chaves?
Enviado: 11 Jul 2023 13:53
por clodoaldomonteiro
Itamar M. Lins Jr. escreveu:Olá!
Código: Selecionar todos
C:\dev\hb32-code>HBMK2 -find hb_h
hbhpdf.hbc (instalado):
hb_HPDF_GetErrorString()
hb_HPDF_IsVersion()
hb_HPDF_Version()
xhb.hbc (instalado):
hb_HashAddMember()
hb_HashId()
xhb_HashError()
Núcleo Harbour (instalado):
hb_HAllocate()
hb_Hash()
hb_HAutoAdd()
hb_HBinary()
hb_HCaseMatch()
hb_HClear()
hb_HClone()
hb_HCopy()
hb_HDefault()
hb_HDel()
hb_HDelAt()
hb_HEval()
hb_HexToNum()
hb_HexToStr()
hb_HFill()
hb_HGet()
hb_HGetDef()
hb_HGetRef()
hb_HHasKey()
hb_HKeepOrder()
hb_HKeyAt()
hb_HKeys()
hb_HMAC_MD5()
hb_HMAC_SHA1()
hb_HMAC_SHA224()
hb_HMAC_SHA256()
hb_HMAC_SHA384()
hb_HMAC_SHA512()
hb_HMerge()
hb_Hour()
hb_HPairAt()
hb_HPos()
hb_hrbDo()
hb_hrbGetFunList()
hb_hrbGetFunSym()
hb_hrbLoad()
hb_hrbRun()
hb_hrbSignature()
hb_hrbUnload()
hb_HScan()
hb_HSet()
hb_HSetAutoAdd()
hb_HSetBinary()
hb_HSetCaseMatch()
hb_HSetDef()
hb_HSetOrder()
hb_HSort()
hb_HValueAt()
hb_HValues()
C:\dev\hb32-code>
Saudações,
Itamar M. Lins Jr.
São ótimas funções, mas não existe na versão do xHarbour do sistema que estou ajustando, e fico muito grato pela ajuda.
Abraços.
Por que a Table Hash ordena as chaves?
Enviado: 11 Jul 2023 14:28
por Itamar M. Lins Jr.
Olá!
Use os "dons do espírito" !
Código: Selecionar todos
Private hIrMemo := Hash(;
'001_ValorVerbasIncidentes', 0.00,;
'002_ValorVerbasDeducoes' , 0.00,;
'003_ValorDescPrevidencia' , 0.00,;
'004_qtdDependenteIR' , 0.00,;
'005_valorPorDependenteIR' , 0.00,;
'006_DeducaoInativo65Anos' , 0.00,;
'007_BaseCalculoIrrfNormal', 0.00,;
'008_valorDeduzirIRSimplificado' , 0.00,;
'009_BaseCalculoIrrfSimplificado', 0.00,;
'010_ValorAliquotaIRRF' , 0.00,;
'011_ValorDeducaoIRRF' , 0.00,;
'012_ValorIRRFPago' , 0.00,;
'013_ValorIRRFLancado' , 0.00;
)
Saudações,
Itamar M. Lins Jr.
Por que a Table Hash ordena as chaves?
Enviado: 12 Jul 2023 07:29
por Wanderlei
A ordem faz diferença?
já que no hash vc utiliza o nome da tag, isso quer dizer que a ordem não importa
Por que a Table Hash ordena as chaves?
Enviado: 12 Jul 2023 08:12
por clodoaldomonteiro
Wanderlei escreveu:A ordem faz diferença?
já que no hash vc utiliza o nome da tag, isso quer dizer que a ordem não importa
Bom dia,
Faz sim, é que as informações tem uma sequência útil para o usuário e queria fazer uma demonstração delas com um For ... Next e de forma genérica, já que vai ter mais de um grupo de informações de Memória de Cálculo.