Página 2 de 2

função HScan() para hash table

Enviado: 06 Nov 2019 18:42
por JoséQuintas
ASimões... NÃO é fixo

a[ "livro" ] [ "titulo" ] := "sei la"
a[ "automóvel" ] [ "marca" ] [ "freio" ] := "volks"
a[ "computador" ] := "intel"

hb_HScan() não serve pra procurar "freio"

função HScan() para hash table

Enviado: 06 Nov 2019 19:54
por asimoes
Façam o teste e me digam, tem que explorar as possibilidades

Código: Selecionar todos

      hRecord := Hb_Hash()
      hRecord["automovel"] := Hb_Hash()
      hRecord["automovel"]["marca"] := Hb_Hash()
      hRecord["automovel"]["marca"]["modelo"] := "volks"

      Hb_HSet(hTable, Hb_NtoS(1), hRecord)

      hRecord := Hb_Hash()
      hRecord["automovel"] := Hb_Hash()
      hRecord["automovel"]["marca"] := Hb_Hash()
      hRecord["automovel"]["marca"]["modelo"] := "fiat"
      
      Hb_HSet(hTable, Hb_NtoS(2), hRecord)
      
      nPos := hb_HScan( hTable, {| nKey, cChave | cChave["automovel"]["marca"]["modelo"] = "fiat"} )

função HScan() para hash table

Enviado: 06 Nov 2019 20:05
por asimoes
As possibilidades:
Quintas o seu exemplo a hash está com "automóvel" isso vai dar ruim

Código: Selecionar todos

nPos := hb_HScan( hTable, {| nKey, cChave | cChave["livro"]["titulo"] = "sei la"} )
nPos := hb_HScan( hTable, {| nKey, cChave | cChave["automovel"]["marca"]["freio"] = "volks"} )
nPos := hb_HScan( hTable, {| nKey, cChave | cChave["computador"] = "intel"} )

função HScan() para hash table

Enviado: 06 Nov 2019 21:35
por JoséQuintas
asimoes escreveu:Quintas o seu exemplo a hash está com "automóvel" isso vai dar ruim
Isso é o corretor ortográfico que faz.

Quanto aos exemplos, continuam no mesmo.
A pesquisa é sempre em um único hash, ou num sub-hash de nome conhecido.

Se os nomes são conhecidos... nem precisa hb_HSCan()... usa direto o valor.

Mas... tem algo estranho nesses exemplos.... eles compilam?

função HScan() para hash table

Enviado: 06 Nov 2019 21:47
por asimoes
JoséQuintas escreveu:Mas... tem algo estranho nesses exemplos.... eles compilam?
Sim e executam, acabei de fazer o teste aqui

Claro que não vai poder misturar esse tipo de coisa do seu exemplo, vai dar ruim

São hash tables distintas

função HScan() para hash table

Enviado: 06 Nov 2019 22:34
por JoséQuintas
É que já fixei -w3 -es2 no cérebro...
Assim compila:

https://github.com/vszakats/hb/blob/mas ... b/txml.prg

Código: Selecionar todos

hb_HScan( oFound:aAttributes, {| xKey, cValue | HB_SYMBOL_UNUSED( xKey ), ::cValue == cValue } ) == 0