Histórico da Página
...
Portuguese | |||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Função: AEVal
|
Nome | Tipo | Descrição | Obrigatório | Referência |
aArray | Vetor | Indica o array que será lido. | X | |
bBloco | Bloco de código | Indica o bloco de código que será executado para cada elemento encontrado. | X | |
nInicio | Numérico | Indica o elemento inicial. Caso não seja especificado, o padrão assumido será o elemento um. | ||
nCont | Numérico | Indica a quantidade de elementos que serão processados a partir do parâmeto nInicio. Caso não seja especificado, o padrão será todos os elementos do array. |
Nil (Nulo)
//Exemplo 1#DEFINE CRLF Chr(13)+Chr(10)#DEFINE TAB Chr(09)User Function Exemplo()Local aMatriz := {}Local bBloco := {|nArg| nArg + 1 }Local cChar := "", cMensagem := ""Local lFound := .F.Local nCount := 0 For nCount := 65 To 90 AAdd(aMatriz, Chr(nCount)) Next nCount//+----------------------------------------------------------------------------+//|Exemplifica o uso da função AEval |//+----------------------------------------------------------------------------+ cChar := "T" cMensagem += "Pesquisando [" + cChar + "] em " + CRLF AEval(aMatriz, {|aMatriz| cMensagem += aMatriz + " " }) cMensagem += CRLF lFound := .F. AEval(aMatriz, {|aMatriz| IIf(aMatriz == cChar, lFound := .T., )}) cMensagem += "A partir da posição 01: " + IIf(lFound, "", "não ") + "encontrado" + CRLF lFound := .F. AEval(aMatriz, {|aMatriz| IIf(aMatriz == cChar, lFound := .T., )}, 21) cMensagem += "A partir da posição 21: " + IIf(lFound, "", "não ") + "encontrado" + CRLF lFound := .F. AEval(aMatriz, {|aMatriz| IIf(aMatriz == cChar, lFound := .T., )}, 1, 19) cMensagem += "A partir da posição 01 e até a posição 19: " + IIf(lFound, "", "não ") + "encontrado" + CRLF lFound := .F. AEval(aMatriz, {|aMatriz| IIf(aMatriz == cChar, lFound := .T., )}, 19, 2) cMensagem += "A partir da posição 19 e até a posição 21: " + IIf(lFound, "", "não ") + "encontrado" + CRLF//+----------------------------------------------------------------------------+//|Apresenta uma mensagem com os resultados obtidos |//+----------------------------------------------------------------------------+Return MsgInfo(cMensagem, "AEval - Exemplo")-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------//Exemplo 2//Este exemplo utiliza AEVAL() para fazer uma lista que consiste em itens selecionados de um vetor multidimensional.LOCAL aFiles := DIRECTORY("*.dbf"), aNames := {}AEVAL(aFiles, { | file | AADD(aNames, file[1]) } )-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Exemplo 3Local aArray := { "Teste" , 123 } Local bBlock := { |x,y| conout(valtype(x)) , conout(y) }aEval(aArray,bBlock)//No exemplo acima , criamos um array com 2 elementos : O primeiro é um Caracter , e o segundo é um número ; e criamos um code-block que receberá em x (primeiro parametro fornecido pela função aEval) cada elemento do array , e y ( segundo parametro fornecido pela aEval ) o número do elemento do array que está sendo processado nesta execução. //O resultado de tela no console do Protheus Server deverá ser : Teste // Conteudo do primeiro elemento C // Tipo do conteudo1 // Numero do elemento processado123 // Conteudo do segundo elementoN // Tipo do Segundo Elemento2 // Numero do elemento processado//Caso o array passado como parâmetro seja um array multi-Dimensional , serão passados como parâmetros os arrays de primeiro nivel para o code-BLock. //Vejamos uma aplicação mais complexa : Um array multi-dimensional temos 2colunas , uma de código (string) e uma de valor ( numérica ) , e seja necessário realizar um cálculo de totalização da coluna numérica: aItens := {}aadd(aItens,{"Branco",10})aadd(aItens,{"Preto",15})aadd(aItens,{"Cinza",12})// Podemos realizar a totalização pelo metodo tradicional : nTotal := 0 For nI := 1 to len(aItens)nTotal := nTotal + aItens[nI][2]Nextconout(nTotal) // 37// Ou utilizando a Funcão aEval : nTotal := 0aeval(aItens , {|x| nTotal += x[2] } )conout(nTotal)
Exemplo da função AEVal
Microsiga Protheus 8.11 , Protheus 10 , TOTVS Application Server 10 , ByYou Application Server
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas