Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
portuguese
Composition Setup
import.css=/download/attachments/3279126062824/newLayouttecnologia.css

Pagetitle
AScan
AScan

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
collapsefalse
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
themeEclipse
languagecpp
titleExemplo 1
linenumberstrue
collapsefalse
#DEFINE CRLF Chr(13)+Chr(10)

User

user 
Function
function 
Exemplo
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

Image Modified

Abrangência

Microsiga Protheus 8.11, Protheus 10

Veja

...

também