Pode-se passar um array como parâmetro para um comando 4D ou para rotina de um plug-in 4D. Por outro lado, não se pode passar um array como parâmetro para um método de usuário. A alternativa é passar um apontador para um array como parâmetro para o método.
Nota: pode-se passar arrays de processo e de interprocesso como parâmetros, mas não arrays locais.
Seguem alguns exemplos.
If((0<atNomes)&(atNomes<Size of array(atNomes))
atNomes:=atNomes+1
End if
Se precisar fazer o mesmo para 50 arrays diferentes, pode-se evitar escrever a mesma coisa 50 vezes, usando o seguinte método de projeto:
C_POINTER($1)
If((0<$1->)&($1-><Size of array($1->))
$1->:=$1->+1
End if
Então, pode-se escrever:
SELECIONAR SEGUINTE ELEMENTO(->atNomes)
SELECIONAR SEGUINTE ELEMENTO(->asCodigosPostais)
SELECIONAR SEGUINTE ELEMENTO(->aiIDRegistros)
- O seguinte método de projeto tem como resultado a soma de todos os elementos de um array numérico (Inteiro, Inteiro longo ou real):
C_REAL($0)
$0:=0
For($vlElem;1;Size of array($1->))
$0:=$0+$1->{$vlElem}
End for
Nota: desde 4D v13, pode utilizar a função Sum para realizar a soma dos elementos de um array numérico.
Assim, pode-se escrever:
$vlSum:=Soma Array(->arSalarios)
$vlSum:=Soma Array(->aiDefectCounts)
$vlSum:=Soma Array(->alPopulacao)
- O seguinte método de projeto coloca em caixa alta todos os elementos de um array de texto ou alfanumérico:
For($vlElem;1;Size of array($1->))
If($1->{$vlElem}#"")
$1->{$vlElem}:=Uppercase($1->{$vlElem}[[1]])+Lowercase(Substring($1->{$vlElem};2))
End if
End for
Assim, pode-se escrever:
MAIUSCULAS ARRAY(->atTemas)
MAIUSCULAS ARRAY(->asSobrenomes)
A combinação de arrays, apontadores e estruturas de looping, como ARRAY TO LIST, permite escrever muitos métodos de projeto úteis para manusear arrays.