aFill

Preenche array (todo ou faixa) com um valor fixo. Util pra inicializar arrays e reset de buffers.

Assinatura: aFill(aArr, xValor, [nIni], [nQtd]) -> aArr

Retorna: Array

aFill preenche elementos do array com um valor fixo — todos os elementos por default, ou faixa especifica.

Sintaxe

aFill(aArr, xValor, nIni, nQtd) --> aArr
//   xValor = valor a preencher
//   nIni   = posicao inicial (default 1)
//   nQtd   = quantos elementos (default ate o fim)

Exemplos

aArr := Array(5)              // {NIL, NIL, NIL, NIL, NIL}
aFill(aArr, 0)                // {0, 0, 0, 0, 0}
aFill(aArr, "X")              // {"X", "X", "X", "X", "X"}

// Faixa especifica
aArr := {1, 2, 3, 4, 5}
aFill(aArr, 0, 2, 3)          // {1, 0, 0, 0, 5}

Casos praticos

1. Reset de buffer entre iteracoes

Local aBuf := Array(10)

For i := 1 To Len(aRegistros)
    aFill(aBuf, NIL)   // limpa antes de cada uso
    aBuf[1] := aRegistros[i][1]
    aBuf[2] := aRegistros[i][2]
    // ...
Next

2. Inicializar array zerado

// Array de totais mensais
Local aTotalMes := Array(12)
aFill(aTotalMes, 0)

// Soma valores por mes
For i := 1 To Len(aTitulos)
    nMes := Month(aTitulos[i][1])
    aTotalMes[nMes] += aTitulos[i][2]
Next

3. Limpar parte do array (preservar resto)

aDados := {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
aFill(aDados, 0, 4, 3)
// {1, 2, 3, 0, 0, 0, 7, 8, 9, 10}

Pegadinhas

Pegadinha critica — referencia compartilhada

// ERRADO — todos elementos apontam pro MESMO sub-array
aLinhas := Array(5)
aFill(aLinhas, {0, 0, 0})

aLinhas[1][1] := 99   // ALTERA TODOS!
// aLinhas[2][1] tambem vira 99

// CERTO — loop com novo array em cada
For i := 1 To 5
    aLinhas[i] := {0, 0, 0}   // cada iteracao = nova instancia
Next

Veja também