Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Converte uma matriz de dados (Array) em um tHashMap, podendo combinar as colunas para a chave de busca.

...

Bloco de código
collapsefalse
oHash := AToHM( < aMatriz >, [ nColuna_1 ], [ nTrim_1 ], [ nColuna_N ], [ nTrim_N ] )

...

  • O valor de “N” varia de 0 (zero) até 8 colunas para serem combinadas na chave de busca.
  • Se nenhuma coluna for adicionada (“N” = 0), usa por padrão a primeira coluna (“nColuna” = 1) e sem trim (“nTrim” = 0).
  • Os valores de “nTrim” podem ser: 0 – não altera a palavra, 1 – Elimina espaços a esquerda, 2 – Elimina espaços a direita, 3 – Elimina espaços a esquerda e a direita. Se o valor de ”nTrim” não for fornecido, considera que não deve eliminar espaços da palavra (“nTrim” = 0).
  • Importante: Se após a conversão do Array em um HashMap este array não for ser mais usado, lembresse de liberar a memória do Array passando ele para Nulo (Nil).

Exemplos

Bloco de código
languagecppthemeEclipse
titleExemplo 1
linenumberstrue
collapsefalse
User Function ex_AToHM()
  Local cKey := ""
  Local oVal := Nil
  Local oHash1 := Nil
  Local oHash2 := Nil
  Local oHash3 := Nil
  Local oHash4 := Nil  
  Local aLista := {}
  
  // Cria a Lista com os elementos
  AAdd(aLista, {"item1",    23, " col3 a ", 1})
  AAdd(aLista, {" item2 ", 104, " col3 b ", 2})
  AAdd(aLista, {"item3",    41, " col3 c ", 3})
  AAdd(aLista, {" item4",    1, " col3 d ", 4})
  AAdd(aLista, {"item5",    18, " col3 e ", 5})
  
  // Por default usa a primeira coluna sem remover os espacos em branco
  oHash1 := AToHM(aLista)
  
  cKey := " item2 "
  lRet := HMGet(oHash1, cKey, oVal)
  If lRet == .T.
    VarInfo("Achou '" + cKey + "' ", oVal)
  Else
    ConOut("Nao achou '" + cKey + "'")
  EndIf
  
  // Limpa os dados do HashMap
  HMClean(oHash1)
  // Libera o objeto de HashMap
  FreeObj(oHash1)
  oHash1 := Nil
  // Chave composta de Hash - converte a 1 coluna sem trim e a coluna 3 com RTrim (trim a diretira)
  oHash2 := AToHM(aLista, 1, 0, 3, 2)
  // Gera uma chave composta de hash converte a 1 coluna sem trim e a coluna 2 com RTrim (trim a diretira)
  cKey := HMKey({" item2 ", " col3 b "}, 1, 0, 2, 2)
  lRet := HMGet(oHash2, cKey, oVal)
  If lRet == .T.
    VarInfo("Achou '" + cKey + "' ", oVal)
  Else
    ConOut("Nao achou '" + cKey + "'")
  EndIf
  
  // Limpa os dados do HashMap
  HMClean(oHash2)
  // Libera o objeto de HashMap
  FreeObj(oHash2)
  oHash2 := Nil
  
  // Chave composta de Hash - converte a 1 coluna com LTrim (a esquerda) e a coluna 3 com RTrim (trim a diretira)
  oHash3 := AToHM(aLista, 1, 1, 3, 3)
  // Gera uma chave composta de hash converte a 1 coluna com LTrim (a esquerda) e a coluna 2 com LTrim e RTrim (trim a diretira e a esquereda)
  cKey := HMKey({" item2 ", " col3 b "}, 1, 1, 2, 3)
  lRet := HMGet(oHash3, cKey, oVal)
  If lRet == .T.
    VarInfo("Achou '" + cKey + "' ", oVal)
  Else
    ConOut("Nao achou '" + cKey + "'")
  EndIf
  
  // Limpa os dados do HashMap
  HMClean(oHash3)
  // Libera o objeto de HashMap
  FreeObj(oHash3)
  oHash3 := Nil
  
  // Chave composta de Hash - converte a 1 coluna sem Trim e a coluna 2 (numerica)
  oHash4 := AToHM(aLista, 1, 0, 2, 0)
 
  // Limpando o Array que nao sera mais usado
  aLista := Nil

  // Gera uma chave composta de hash converte a 1 coluna sem Trim e a coluna 2 (numerica)
  cKey := HMKey({" item2 ", 104}, 1, 0, 2, 0)
  lRet := HMGet(oHash4, cKey, oVal)
  If lRet == .T.
    VarInfo("Achou '" + cKey + "' ", oVal)
  Else
    ConOut("Nao achou '" + cKey + "'")
  EndIf
  
  // Limpa os dados do HashMap
  HMClean(oHash4)
  // Libera o objeto de HashMap
  FreeObj(oHash4)
  oHash4 := Nil
  
Return

...