Conversão de Array para HashMap com a função AToHM – Maratona AdvPL e TL++ 050

Nesse vídeo será demonstrado a utilização da função AToHM que converte um array para um objeto HashMap.

Abaixo o código fonte desenvolvido para o exemplo em vídeo acima:

//Bibliotecas
#Include "TOTVS.ch"

/*/{Protheus.doc} User Function zExe050
Exemplo de função que converte um Array para um objeto HashMap
@type Function
@author Atilio
@since 01/12/2022
@see https://tdn.totvs.com/display/tec/AToHM
@obs 
    Função AToHM
    Parâmetros
        + aMatriz   , Array      , Indica o nome do array que será transformado em objeto
        + nColuna_1 , Numérico   , Indica o número da coluna que será a chave da pesquisa
        + nTrim_1   , Numérico   , Indica o tipo de trim que será aplicado em dados caractere (0 = mantém; 1 = tira espaços a esquerda; 2 = tira espaços a direita; 3 = tira espaços de ambos os lados)
        + nColuna_2 , Numérico   , Indica o número da coluna que será a chave da pesquisa
        + nTrim_2   , Numérico   , Indica o tipo de trim que será aplicado em dados caractere (0 = mantém; 1 = tira espaços a esquerda; 2 = tira espaços a direita; 3 = tira espaços de ambos os lados)
        + nColuna_3 , Numérico   , Indica o número da coluna que será a chave da pesquisa
        + nTrim_3   , Numérico   , Indica o tipo de trim que será aplicado em dados caractere (0 = mantém; 1 = tira espaços a esquerda; 2 = tira espaços a direita; 3 = tira espaços de ambos os lados)
        + nColuna_4 , Numérico   , Indica o número da coluna que será a chave da pesquisa
        + nTrim_4   , Numérico   , Indica o tipo de trim que será aplicado em dados caractere (0 = mantém; 1 = tira espaços a esquerda; 2 = tira espaços a direita; 3 = tira espaços de ambos os lados)
        + nColuna_5 , Numérico   , Indica o número da coluna que será a chave da pesquisa
        + nTrim_5   , Numérico   , Indica o tipo de trim que será aplicado em dados caractere (0 = mantém; 1 = tira espaços a esquerda; 2 = tira espaços a direita; 3 = tira espaços de ambos os lados)
        + nColuna_6 , Numérico   , Indica o número da coluna que será a chave da pesquisa
        + nTrim_6   , Numérico   , Indica o tipo de trim que será aplicado em dados caractere (0 = mantém; 1 = tira espaços a esquerda; 2 = tira espaços a direita; 3 = tira espaços de ambos os lados)
        + nColuna_7 , Numérico   , Indica o número da coluna que será a chave da pesquisa
        + nTrim_7   , Numérico   , Indica o tipo de trim que será aplicado em dados caractere (0 = mantém; 1 = tira espaços a esquerda; 2 = tira espaços a direita; 3 = tira espaços de ambos os lados)
        + nColuna_8 , Numérico   , Indica o número da coluna que será a chave da pesquisa
        + nTrim_8   , Numérico   , Indica o tipo de trim que será aplicado em dados caractere (0 = mantém; 1 = tira espaços a esquerda; 2 = tira espaços a direita; 3 = tira espaços de ambos os lados)
    Retorno
        + oHash     , Objeto     , Objeto instanciado da classe THashMap

    **** Apoie nosso projeto, se inscreva em https://www.youtube.com/TerminalDeInformacao ****
/*/

User Function zExe050()
    Local aArea      := FWGetArea()
    Local aDadosMult := {}
    Local oHashTst
    Local cBusca     := ""
    Local lEncontrou := .F.
    Local aLinha     := {}

    //Adicionando elementos no Array (código, nome e idade)
    aAdd(aDadosMult, {"0001", "Daniel",   23})
    aAdd(aDadosMult, {"0002", "Atilio",   33})
    aAdd(aDadosMult, {"0003", "João",     43})
    aAdd(aDadosMult, {"0004", "Maria",    53})
    aAdd(aDadosMult, {"0005", "José",     63})

    //Converte o Array para um THashMap, colocando como chave a coluna 1 e sem tirar espaços do conteúdo caractere
    oHashTst := AToHM(aDadosMult, 1, 0)

    //Efetua a busca do código via HMGet, se encontrou vai colocar na variável aLinha
    cBusca := "0003"
    lEncontrou := HMGet(oHashTst, cBusca, aLinha)

    //Se encontrou, iremos verificar o conteúdo do aLinha
    If lEncontrou
        ShowLog( ;
            VarInfo("aLinha", aLinha, , .F.) ;
        )
    EndIf

    //Limpa o Hash da memória e libera o objeto
    HMClean(oHashTst)
    FreeObj(oHashTst)

    FWRestArea(aArea)
Return

Bom pessoal, por hoje é só.

Abraços e até a próxima.

Dan (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

Deixe uma resposta

Terminal de Informação