Histórico da Página
Composition Setup |
---|
import.css=/download/attachments/3279126062824/newLayouttecnologia.css |
Portuguese |
Pagetitle |
---|
...
|
Executa um bloco de código para cada elemento de um
Função: AEVal
...
array.
Sintaxe
...
AEVal ( < aArray>, < bBloco>, [ nInicio], [ nCont] ) --> Nil
...
Bloco de código | ||
---|---|---|
| ||
AEval( < aArray >, < bBlock >, [ nStart ], [ nCount ] )
|
Parâmetros
Nome | Tipo | Descrição | Obrigatório | Referência |
---|---|---|---|---|
aArray |
...
vetor | Indica o array que será lido. | X |
...
|
bBlock |
...
bloco de código | Indica o bloco de código que será executado para cada elemento encontrado. | X |
...
|
nStart |
...
numérico | Indica o elemento inicial. |
...
|
| |
nCount | numérico |
...
Indica a quantidade de elementos que serão processados a partir |
...
do parâmetro nStart. |
|
|
Retorno
Nome | Tipo | Descrição |
---|---|---|
aRet | vetor | Retorna uma cópia do array indicado por aArray após a operação. |
Observações
- Caso nStart não seja especificado, é considerado o valor 1.
- Caso nCount não seja especificado, o padrão será todos os elementos do array a partir de nStart.
- Caso aArray seja um array multi-dimensional, serão passados como parâmetros os arrays de primeiro nivel para bBlock.
Exemplos
Bloco de código | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
#DEFINE . Nil (Nulo) CRLF Chr(13)+Chr(10) #DEFINE TAB Chr(09) User FunctionExemplo aeval1() 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 1")
|
Bloco de código | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
#DEFINE CRLF Chr(13)+Chr(10) user function aeval2() //Este exemplo utiliza AEVAL() para fazer uma lista que consiste em // itens selecionados de um vetor multidimensional.LOCAL Local aFiles :=DIRECTORY Directory( "\*.dbf txt" ), aNames := {}AEVAL(aFiles, Local cMensagem := "" AEval( aFiles, { | file |AADD AAdd( aNames, file[1] ) } ) varinfo( "aNames", aNames ) AEval( aNames, { | name | cMensagem += ( name + CRLF ) } ) return MsgInfo( cMensagem, "AEval - Exemplo 2" ) |
Bloco de código | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
user function aeval3()
Local -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Exemplo 3Local aArray := { "Teste" , 123 } Local bBlock := { | x, y | conout( x ), conout( valtype( x ) ) , conout( y ) }aEval(aArray,bBlock)// Local nI := 0, nTotal := 0 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çãoaEval AEval) // cada elemento do array , e y ( segundo parametro fornecido pela aEval AEval) o número do elemento do array // que está sendo processado nesta execução. // // O resultado de tela no console doProtheus Application Server deverá ser :Teste // Teste --> Conteudo do primeiro elementoC // C --> Tipo doconteudo1 conteudo // 1 --> Numero do elementoprocessado123 processado //Conteudo 123do segundo elementoN // Tipo do Segundo Elemento2--> Conteudo do segundo elemento //Numero Ndo elemento processado//Caso o array-->passado Tipocomo doparâmetro Segundoseja Elementoum array multi-Dimensional , serão passados como parâmetros os arrays de primeiro nivel para o code-BLock. //// 2 --> Numero do elemento processado // // Vejamos uma aplicação mais complexa:: EmUm um array multi-dimensional temos2colunas 2 colunas, // 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: ASize( aArray, 0aItens ):= {}aadd(aItens,{AAdd( aArray, { "Branco", 10 } )aadd(aItens,{ AAdd( aArray, { "Preto", 15 } )aadd(aItens,{ AAdd( aArray, { "Cinza", 12 } ) // Podemos realizar a totalização pelo metodo tradicional : nTotal := 0 For nI := 1 to len(aItens) aArray ) nTotal := nTotal +aItens aArray[nI][2]Nextconout(nTotal Next conout( nTotal ) // Vai exibir "37"// 37// Ou utilizando a FuncãofunçãoaEval AEval: nTotal := 00aeval AEval(aItens aArray, { | x | nTotal += x[2] } ) conout( nTotal )Exemplo da função AEVal // Vai exibir os mesmos "37"
return
|
Resultado dos Exemplos
Abrangência
Microsiga Protheus 8.11, Protheus 10, TOTVS Application Server 10, ByYou Application Server
Veja
...
também
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas