Clipper On Line • Ver Tópico - Exemplo Entendendo o Uso de Hash

Exemplo Entendendo o Uso de Hash

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

 

Exemplo Entendendo o Uso de Hash

Mensagempor asimoes » 14 Set 2019 17:21

Achei interessante o exemplo.

Link original: http://www.blacktdn.com.br/2012/01/blacktdn-harbour-entendendo-o-uso-de.html#ixzz5zVdIA2Ob

FUNCTION HASH()
LOCAL hPessoa  := Hb_Hash()
LOCAL hPessoas := Hb_Hash()
LOCAL nPessoa  := 0
LOCAL nPessoas := 1000

   SET CENTURY ON

   SET DATE TO BRITISH

   SET DATE FORMAT "mm/dd/yyyy"

   hPessoa["PESSOA"] := Hb_Hash()

   hb_HCaseMatch( hPessoa["PESSOA"] , .F. )

   hPessoa["PESSOA"]["NOME"]        := "BlackTDN"
   hPessoa["PESSOA"]["NASCIMENTO"]  := Ctod("01/01/2012")
   hPessoa["PESSOA"]["SEXO"]        := "M"
   hPessoa["PESSOA"]["PAIS"]        := "Brasil"
   hPessoa["PESSOA"]["ENDERECO"]    := "http://blacktdn.com.br"
   hPessoa["PESSOA"]["CEP"]         := "00000-000"

   ? 'hPessoa["PESSOA"]["NOME"] :' + LTrim(str(Hb_hPos( hPessoa["PESSOA"] , "NOME" ) ))

   ? 'hPessoa["PESSOA"]["NOME"] :' + Hb_hGet( hPessoa["PESSOA"] , "NOME" )

   ? Hb_Eol()

   ? 'hPessoa["PESSOA"]["NASCIMENTO"] :' + LTrim(str(Hb_hPos( hPessoa["PESSOA"] , "NASCIMENTO" ) ))

   ? 'hPessoa["PESSOA"]["NASCIMENTO"] :' + dtoc( Hb_hGet( hPessoa["PESSOA"] , "NASCIMENTO" ) )

   ? Hb_Eol()

   ? 'hPessoa["PESSOA"]["SEXO"] :' + LTrim(str(Hb_hPos( hPessoa["PESSOA"] , "SEXO" )))

   ? 'hPessoa["PESSOA"]["SEXO"] :' + Hb_hGet( hPessoa["PESSOA"] , "SEXO" )

   ? Hb_Eol()

   ? 'hPessoa["PESSOA"]["PAIS"] :' + LTrim(str(Hb_hPos( hPessoa["PESSOA"] , "PAIS" )))

   ? 'hPessoa["PESSOA"]["PAIS"] :' + Hb_hGet( hPessoa["PESSOA"] , "PAIS" )

   ? Hb_Eol()


   ? 'hPessoa["PESSOA"]["ENDERECO"] :' + LTrim(str(Hb_hPos( hPessoa["PESSOA"] , "ENDERECO" ) ))

   ? 'hPessoa["PESSOA"]["ENDERECO"] :' + Hb_hGet( hPessoa["PESSOA"] , "ENDERECO" )

   ? Hb_Eol()
   
   ? 'hPessoa["PESSOA"]["CEP"] :' + LTrim(str( Hb_hPos( hPessoa["PESSOA"] , "CEP" ) ))

   ? 'hPessoa["PESSOA"]["CEP"] :' + Hb_hGet( hPessoa["PESSOA"] , "CEP" )

   ? Hb_Eol()

   For nPessoa := 1 To 1 //nPessoas

      hPessoas[nPessoa]                         := Hb_hClone(hPessoa)

      hPessoas[nPessoa]["PESSOA"]["NOME"]       += ' ' + StrZero(nPessoa,4)

      IF ( ( nPessoa % 2 ) == 0 )

         hPessoas[nPessoa]["PESSOA"]["NASCIMENTO"] := YearSum( hPessoas[nPessoa]["PESSOA"]["NASCIMENTO"] , nPessoa )

      Else

         hPessoas[nPessoa]["PESSOA"]["NASCIMENTO"] := YearSub( hPessoas[nPessoa]["PESSOA"]["NASCIMENTO"] , nPessoa )

      EndIF

   Next nPessoa

   

   FOR EACH hPessoa in hPessoas

      ? 'hPessoa["PESSOA"]["NOME"] :' + LTrim(str(Hb_hPos( hPessoa["PESSOA"] , "NOME" ) ))

      ? 'hPessoa["PESSOA"]["NOME"] :' + Hb_hGet( hPessoa["PESSOA"] , "NOME" )

      ? Hb_Eol()

      ? 'hPessoa["PESSOA"]["NASCIMENTO"] :' + LTrim(str(Hb_hPos( hPessoa["PESSOA"] , "NASCIMENTO" ) ))

      ? 'hPessoa["PESSOA"]["NASCIMENTO"] :' + dtoc( Hb_hGet( hPessoa["PESSOA"] , "NASCIMENTO" ) )

      ? Hb_Eol()

      ? 'hPessoa["PESSOA"]["SEXO"] :' + LTrim(str(Hb_hPos( hPessoa["PESSOA"] , "SEXO" )))

      ? 'hPessoa["PESSOA"]["SEXO"] :' + Hb_hGet( hPessoa["PESSOA"] , "SEXO" )

      ? Hb_Eol()

      ? 'hPessoa["PESSOA"]["PAIS"] :' + LTrim(str(Hb_hPos( hPessoa["PESSOA"] , "PAIS" )))

      ? 'hPessoa["PESSOA"]["PAIS"] :' + Hb_hGet( hPessoa["PESSOA"] , "PAIS" )

      ? Hb_Eol()

      ? 'hPessoa["PESSOA"]["ENDERECO"] :' + LTrim(str(Hb_hPos( hPessoa["PESSOA"] , "ENDERECO" ) ))

      ? 'hPessoa["PESSOA"]["ENDERECO"] :' + Hb_hGet( hPessoa["PESSOA"] , "ENDERECO" )

      ? Hb_Eol()

      ? 'hPessoa["PESSOA"]["CEP"] :' + LTrim(str( Hb_hPos( hPessoa["PESSOA"] , "CEP" ) ))

      ? 'hPessoa["PESSOA"]["CEP"] :' + Hb_hGet( hPessoa["PESSOA"] , "CEP" )

      ? Hb_Eol()


   NEXT EACH \\hPessoa

   inkey(0)

Return( .T. )



Function Day2Str( uData )

   Local cType := ValType( uData )

IF ( cType == "D" )

   Return( StrZero( Day( uData ) , 2 ) )

ElseIF ( cType == "N" )

   Return( StrZero( uData , 2 ) )

ElseIF ( cType == "C" )

   Return( StrZero( Val( uData ) , 2 ) )

EndIF



Function Month2Str( uData )

   Local cType := ValType( uData )

IF ( cType == "D" )

   Return( StrZero( Month( uData ) , 2 ) )

ElseIF ( cType == "N" )

   Return( StrZero( uData , 2 ) )

ElseIF ( cType == "C" )

   Return( StrZero( Val( uData ) , 2 ) )

EndIF



Function Year2Str( uData )

   Local cType := ValType( uData )

IF ( cType == "D" )

   Return( StrZero( Year( uData ) , 4 ) )

ElseIF ( cType == "N" )

   Return( StrZero( uData , 4 ) )

ElseIF ( cType == "C" )

   Return( StrZero( Val( uData ) , 4 ) )

EndIF



Function Last_Day( dDate )



   Local nMonth

   Local nYear



   IF ( ValType( dDate ) == "C" )

      dDate := CToD( dDate )   

   EndIF



   nMonth := ( Month( dDate ) + 1 )

   nYear  := Year( dDate )

   IF ( nMonth > 12 )

      nMonth := 1

      ++nYear

   EndIF



   dDate := CToD( "01/" + Month2Str( nMonth ) + "/" + Year2Str( nYear ) )

   dDate -= 1



Return( Day( dDate ) )



Function YearSum( dDate , nYear )



   Local nMonthAux := Month( dDate )

   Local nDayAux   := Day( dDate )

   Local nYearAux  := Year( dDate )



   nYearAux += nYear

   dDate := Ctod( Day2Str( nDayAux ) + "/" + Month2Str( nMonthAux ) + "/" + Year2Str( nYearAux ) )

   IF Empty( dDate )

      dDate   := Ctod( Day2Str( 1 ) + "/" + Month2Str( nMonthAux ) + "/" + Year2Str( nYearAux ) )

      nDayAux := Last_Day( dDate )

      dDate   := Ctod( Day2Str( nDayAux ) + "/" + Month2Str( nMonthAux ) + "/" + Year2Str( nYearAux ) )

   EndIF



Return( dDate )



Function YearSub( dDate , nYear )



   Local nMonthAux := Month( dDate )

   Local nDayAux   := Day( dDate )

   Local nYearAux  := Year( dDate )



   nYearAux -= nYear

   dDate := Ctod( Day2Str( nDayAux ) + "/" + Month2Str( nMonthAux ) + "/" + Year2Str( nYearAux ) )

   IF Empty( dDate )

      dDate   := Ctod( Day2Str( 1 ) + "/" + Month2Str( nMonthAux ) + "/" + Year2Str( nYearAux ) )

      nDayAux := Last_Day( dDate )

      dDate   := Ctod( Day2Str( nDayAux ) + "/" + Month2Str( nMonthAux ) + "/" + Year2Str( nYearAux ) )

   EndIF

Return( dDate )
►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 de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4208
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 294 vezes
Mens.Curtidas: 210 vezes

Exemplo Entendendo o Uso de Hash

Mensagempor JoséQuintas » 14 Set 2019 22:35

hazael escreveu:Talvez o HASH possa ser usado para carregar um arquivo XML da NFe, por exemplo, assim ficaria mais fácil.


Por enquanto no Danfe da sefazclass ainda usa por hash.
Ainda não eliminei isso.

Sinceramente, ainda não vi nada onde isso poderia trazer vantagens.
Não sei no futuro.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 11927
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 763 vezes




Retornar para Contribuições, Dicas e Tutoriais

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 1 visitante


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro