função HScan() para hash table

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

Moderador: Moderadores

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

função HScan() para hash table

Mensagem 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"
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

função HScan() para hash table

Mensagem 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"} )
►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 do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

função HScan() para hash table

Mensagem 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"} )
►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 do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

função HScan() para hash table

Mensagem 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?
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

função HScan() para hash table

Mensagem 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
►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 do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

função HScan() para hash table

Mensagem 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
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder