aSize em ADVPL — Como Alterar o Tamanho de um Array no Protheus

Tempo de leitura: 4 minutos

No desenvolvimento Protheus, trabalhar com coleções de dados exige flexibilidade. Muitas vezes, iniciamos um processo com um array de tamanho fixo, mas precisamos expandi-lo para comportar novos registros ou reduzi-lo para otimizar a memória. A função aSize em ADVPL é a ferramenta nativa para realizar esse redimensionamento, sendo um conceito fundamental em Manipulação de Array.

 

Neste guia prático, você aprenderá como utilizar a aSize para aumentar ou diminuir arrays, entendendo o comportamento do sistema com valores nulos e descarte de elementos.

O que é a função aSize e como ela funciona?

A função aSize altera o tamanho de um array especificado. O array será ajustado para atingir exatamente o tamanho definido pelo desenvolvedor.

  • Ao aumentar o array: Os novos elementos são adicionados ao final da estrutura e recebem inicialmente o valor NIL.
  • Ao diminuir o array: Os últimos elementos são descartados permanentemente da memória.

 

🚀 Quer evoluir no ADVPL de verdade?

Receba conteúdos práticos, códigos prontos e dicas que você 

 não aprende na documentação oficial

✔ Funções essenciais do ADVPL
✔ Exemplos reais usados no Protheus
✔ Dicas de debug e performance

🔐 Seu email está seguro. Sem spam.

 

Sintaxe:

aSize( <aDestino>, <nTam> )

 

Parâmetro(s):

 

Retorno:

 

Utilização

A função aSize altera o tamanho do array especificado. O array será aumentado ou diminuído para atingir o tamanho especificado pelo parâmetro nTam.

Se o array for diminuído, os últimos elementos serão descartados. Se o array for aumentado, os novos elementos serão adicionados no final e conterão o valor NIL.

Exemplo 1: Aumentando o Tamanho de um Array

Neste cenário, aumentamos um array de 4 para 5 posições. Note que, ao debugar o código, no momento em que usamos a função aSize para aumentar o array aNomes, a última posição fica com o valor NIL. Por isso, precisamos atribuir um conteúdo a essa nova posição.

No exemplo abaixo em ADVPL podemos ver como utilizar a função aSize para aumentar um array:

#include 'protheus.ch'

/*{Protheus.doc} User Function faSize
    -Esse programa tem por finalidade mostrar a função de manipulação de array aSize em ADVPL/TLPP
    @type  Function
    @author Adilio Costa
    @since 20/01/2019
    @version 1.0

@Participe de nossas comunidades no WhatsApp:
-Comunidade Protheus Backoffice:https://chat.whatsapp.com/KMUIAjwZ6EZ6eAHsLkPTyb
-Comunidade Protheus-RH:https://chat.whatsapp.com/L5dUyAna6xU4ylG5DUgfOW
-Comunidade Protheus-Programação:https://chat.whatsapp.com/LsD6z0apdqKHlOz67bcaEn
-Comunidade Protheus-Framework:https://chat.whatsapp.com/BzUFpjaSnTC3vtsfa77jmG
*/


User Function faSize()
	Local cMsg := ""
	Local nCont := 0

	Local aNomes := {"Adilio","Aline","Roberto","Danilo"}

	//Aumentando o tamanho do array de 4 para 5
	aSize(aNomes,5)
	//A posição 5 possui o valor Nil, agora substituímos esse valor por "Rodrigo"
	aNomes[5] := "Rodrigo"

	For nCont := 1 To 5
		cMsg +="Nome "+cValToChar(nCont)+":"+aNomes[nCont]

		If(nCont <> 5)
			cMsg += ","
		EndIf
	Next

	MsgAlert(cMsg)

Return

🚀 Quer evoluir no ADVPL de verdade?

Receba conteúdos práticos, códigos prontos e dicas que você 

 não aprende na documentação oficial

✔ Funções essenciais do ADVPL
✔ Exemplos reais usados no Protheus
✔ Dicas de debug e performance

🔐 Seu email está seguro. Sem spam.

No exemplo abaixo quando debugamos o código podemos ver que no momento que usamos a função aSize para aumentar o array aNomes para o tamanho 5 a última posição ficou com o valor NIL, assim nós tivemos que colocar o conteúdo “Rodrigo” nessa posição 5(aNomes[5] := “Rodrigo”):

aSize

 

Na imagem abaixo podemos ver o nosso array aNomes com o nome “Rodrigo” na posição 5:

A função aSize aumentando o tamanho do array aNomes

Exemplo 2: Diminuindo o Tamanho de um Array

Agora, veja como utilizar a função aSize para reduzir um array. Neste exemplo, diminuímos o array aNomes de 5 para 3 elementos, descartando as duas últimas posições.

No exemplo abaixo iremos utilizar a função aSize para diminuir o array aNomes de 5 para 3:

#include 'protheus.ch'
/*{Protheus.doc} User Function faSize2
    (Essa função tem por finalidade mostrar a função de Manipulação de Array aSize em ADVPL)
    @type  Function
    @author Adilio Costa
    @since 02/05/2020
    @version 1.0
    @site https://www.protheusadvpl.com.br
    @canal https://www.youtube.com/protheusadvpl
    @instagram https://www.instagram.com/protheusadvpl
    @Portal ProtheusAdvpl:https://hotmart.com/pt-br/marketplace/produtos/portal-protheusadvpl/O10336806O
    @Post:aSize
*/
User Function faSize2()
	Local cMsg := ""
	Local nCont := 0
	
	Local aNomes := {"Adilio","Aline","Roberto","Danilo","Rodrigo"}

	//Diminuindo o tamanho do array de 5 para 3
	aSize(aNomes,3)

	For nCont := 1 To 3
		cMsg +="Nome "+cValToChar(nCont)+":"+aNomes[nCont]

		If(nCont <> 3)
			cMsg += ","
		EndIf
	Next

	MsgAlert(cMsg)

Return


Domine a Manipulação de Dados no Protheus

Para dominar este conceito em cenários complexos, com aulas em vídeo e suporte especializado, conheça o Portal ProtheusAdvpl. Lá, exploramos a fundo a arquitetura por trás desta função e suas aplicações em grandes projetos.

 

Cursos Recomendados para Programação:

 

Conclusão

A função aSize em ADVPL é indispensável para o controle dinâmico de dados no Protheus. Seja para preparar um array para novos dados ou para limpar a memória descartando itens desnecessários, ela oferece a precisão necessária para o desenvolvedor. Dominar a Manipulação de Array é o que diferencia um código eficiente de um sistema lento.

 

Se você gostou deste guia, confira também nosso artigo sobre Como Adicionar Elementos com aAdd.

 

Links de referência(s):

 

Conteúdos relacionados

 
🚀 Quer evoluir no ADVPL de verdade?

Receba conteúdos práticos, códigos prontos e dicas que você 

 não aprende na documentação oficial

✔ Funções essenciais do ADVPL
✔ Exemplos reais usados no Protheus
✔ Dicas de debug e performance

🔐 Seu email está seguro. Sem spam.
🚀 Quer dominar o Protheus de verdade?
Entre para o ProtheusAdvpl e receba conteúdos exclusivos sobre desenvolvimento, infraestrutura, módulos e carreira no Protheus

✔ Conteúdos organizados por categorias (Programação, Framework, Backoffice e RH)
✔ Dicas práticas usadas no dia a dia do Protheus
✔ Acesso a materiais, post e atualizações do Blog
🔐 Seu email está seguro. Sem spam. Só conteúdo profissional.