Histórico da Página
Composition Setup |
---|
import.css=/download/attachments/3279126062824/newLayouttecnologia.css |
|
Pagetitle | ||||
---|---|---|---|---|
|
Função: AScan
Percorre
...
um
...
array
...
procurando
...
por
...
um
...
valor
...
especificado.
...
Pode
...
ser
...
especificado
...
um
...
valor
...
a
...
ser
...
buscado,
...
ou
...
pode
...
ser
...
informada
...
uma
...
condição
...
de
...
busca
...
através
...
de
...
um
...
bloco
...
de
...
código.
...
Sintaxe
Bloco de código | ||
---|---|---|
| ||
AScan( <aDestino> aDest >, <ProcuraExp> xExpr >, [nInicio nStart ], [nCont nCount ] )--> nRet
|
Parâmetros
...
Nome | Tipo | Descrição | Obrigatório | Referência |
---|
...
aDest |
...
vetor | Indica o array a ser avaliado. | X |
...
|
xExpr |
...
qualquer | Indica a expressão de busca. Para um array de dimensão simples, pode ser colocado diretamente um valor a ser procurado. Para uma busca mais complexa ou para uma busca em array muti-dimensional, deve ser especificado um bloco de código. | X |
...
|
nStart |
...
numérico | Indica a partir de qual elemento será realizada busca. Por padrão a pesquisa inicia no elemento 1. |
|
|
...
nCount |
...
numérico | Indica por quantos elementos serão considerados na operação de busca. Caso não especificado, todos os elementos do array a partir da posição inicial de busca serão considerados. |
|
|
Retorno
Nome | Tipo | Descrição |
---|---|---|
nRet |
...
numérico | Caso o valor procurado seja encontrado, será retornado o número do elemento do array correspondente. Caso contrário, é retornado o valor 0 (zero). |
Observações
Em uma busca utilizando um array de dimensão simples, a expressão de busca
...
<xExpr> pode ser do tipo "C" (Caractere), "N" (Numérico),
...
"D" (Data) ou
...
"L" (Lógico).
...
O array pode conter elementos de tipos variados, as comparações somente serão realizadas quando o elemento do array em questão for do mesmo tipo do conteúdo informado para busca.
...
Quando realizada a busca por uma string, a determinação da igualdade entre a string informada para busca e a string do elemento do array está sujeita ao estado da definição SET EXACT do
...
AdvPL, por padrão desligada
...
– veja comportamento do operador
...
"=" (igualdade simples) entre
...
strings do
...
AdvPL.
Caso a busca em questão seja feita em um array multi-dimensional (array de array(s)), ou a condição de busca seja mais complexa ou específica, até mesmo uma condição composta, podemos especificar em
...
<xExpr> um bloco de código, que receberá como parâmetro um elemento por vez do array
...
aDest, a partir da posição inicial de busca. O code-block deve retornar um valor lógico .T. (Verdadeiro) caso o elemento em questão seja o elemento desejado, e a condição de busca seja satisfeita, e quando isto acontecer, a função
...
AScan retornará o número do elemento do array
...
aDest que foi informado ao bloco de código que atendeu a condição de busca.
...
Caso o bloco de código retorne .F. (Falso), indicando que o elemento informado não atende a condição de busca, será fornecido o proximo elemento do array e o bloco de código é avaliado novamente. A operação de busca é
...
encerrada até que todos os elementos compreendidos pela parametrização
...
nStart /
...
nCount sejam vasculhados.
...
Se nenhuma chamada do bloco de código retornar .T., a função
...
AScan retornará 0, indicando que nenhum elemento pesquisado satisfez a condição de busca.
...
Exemplos
Bloco de código | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
#DEFINE CRLF Chr(13)+Chr(10) UseruserFunction functionExemplo ascan1() Local aExemplo := { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 } Local cMensagem := "" //+----------------------------------------------------------------------------+ //|Exemplifica o uso da função AScan | //+----------------------------------------------------------------------------+ cMensagem += "Elemento 5 " + CRLF cMensagem += "Em " + cValToChar( AScan( aExemplo, 5 ) ) + CRLF cMensagem += "A partir da posição 6 em " + ; cValToChar( AScan( aExemplo, 5, 6 ) ) + CRLF cMensagem += "A partir da posição 1 procurados em 3 em " + ; cValToChar( AScan( aExemplo, 5, 6, 3 ) ) + CRLF //+----------------------------------------------------------------------------+ //|Apresenta uma mensagem com os resultados obtidos | //+----------------------------------------------------------------------------+ Return MsgInfo( cMensagem, "Exemplo do AScan" )Exemplo da função AScan |
Resultado do Exemplo
Abrangência
Microsiga Protheus 8.11, Protheus 10
Veja
...
também