Array

Construtor de array com tamanho fixo, todos elementos NIL. Mais explicito que {} + aSize. Util pra inicializar matriz multidimensional.

Assinatura: Array(nTam) -> aArr

Retorna: Array

Array e o construtor de array em AdvPL — cria array com tamanho fixo, todos os elementos NIL. Alternativa ao literal {} quando voce ja sabe o tamanho.

Sintaxe

Array(nTam)             --> array unidimensional
Array(nLinhas, nCols)   --> array bidimensional (matriz)

Exemplos

// 1D
aArr := Array(5)              // {NIL, NIL, NIL, NIL, NIL}
aArr[1] := "primeiro"
aArr[5] := "ultimo"

// 2D
aMatriz := Array(3, 4)        // 3 linhas, 4 colunas
aMatriz[1][1] := "topo-esq"
aMatriz[3][4] := "base-dir"

Comparacao com alternativas

// Mesma coisa, tres jeitos
aA := Array(5)
aB := {NIL, NIL, NIL, NIL, NIL}
aC := {} ; aSize(aC, 5)

// Array() e mais explicito quando voce SO quer alocar
// {} e melhor quando voce ja tem os valores

Casos praticos

1. Buffer fixo pra evitar realocacao

// Pre-aloca 1000 posicoes — evita N x aAdd (cada um possivelmente realoca)
Local aLog := Array(1000)
Local nIdx := 0

While !Eof() .And. nIdx < 1000
    nIdx++
    aLog[nIdx] := SC5->C5_NUM
    SC5->(DBSkip())
EndDo
// Trunca o nao usado
aSize(aLog, nIdx)

2. Matriz de dados pra grid

// Grid 10x5 de relatorio
aGrid := Array(10, 5)

aGrid[1][1] := "Cliente"
aGrid[1][2] := "Codigo"
aGrid[1][3] := "Saldo"
aGrid[1][4] := "Vencto"
aGrid[1][5] := "Status"

// Preenche linhas
For i := 2 To 10
    aGrid[i][1] := SA1->A1_NOME
    aGrid[i][2] := SA1->A1_COD
    // ...
Next

Pegadinhas

Parâmetros

NomeTipoObrigatórioDescrição
nTamNumericsimTamanho (uni-dimensional).
nColsNumericnãoColunas (cria 2D).

Veja também