aScan

Busca um elemento num array. Retorna a posicao (base 1) ou 0 se nao encontrar. Aceita bloco de codigo pra busca complexa.

Assinatura: aScan(aArray, xBusca | bCondicao) -> nPos

Retorna: Numeric

aScan tem duas formas: busca simples por igualdade ou busca com bloco de codigo (mais flexivel — padrao em arrays multidimensionais).

Sintaxe

nPos := aScan(aArray, xValor)              // busca direta
nPos := aScan(aArray, {|x| condicao(x)})  // busca com bloco

Exemplo

aLista := {"A", "B", "C", "D"}
nPos := aScan(aLista, "C")  // 3 (base 1)

// Array multidimensional — busca por bloco:
aProdutos := { ;
    {"P01", "Caneta",   3.50}, ;
    {"P02", "Borracha", 1.20}, ;
    {"P03", "Lapis",    2.00}  ;
}
nPos := aScan(aProdutos, {|x| x[1] == "P02"})  // 2

// Verificar antes de acessar:
If (nPos := aScan(aLista, cValor)) > 0
    cAchei := aLista[nPos]
EndIf

Pegadinhas

Parâmetros

NomeTipoObrigatórioDescrição
aArrayArraysimArray onde buscar
xBuscaAny | CodeBlocksimValor a buscar OU bloco de codigo {|x| condicao}

Exemplos

Busca com bloco em array 2D

nPos := aScan(aItens, {|x| x[1] == cCodProcurado})

Veja também