aDel

Remove um elemento do array movendo os demais. Nao reduz tamanho — fica posicao NIL no fim. Combinar com aSize.

Assinatura: aDel(aArr, nPos) -> aArr

Retorna: Array

aDel remove um elemento na posicao nPos e desloca os elementos seguintes uma posicao pra tras. Mas nao reduz o tamanho do array — o ultimo elemento vira NIL. Pra reduzir, use aSize em seguida.

Sintaxe

aArr := {"A", "B", "C", "D"}
aDel(aArr, 2)              // {"A", "C", "D", NIL}
aSize(aArr, Len(aArr) - 1) // {"A", "C", "D"}

Helper recomendado

Static Function _aDelete(aArr, nPos)
    aDel(aArr, nPos)
    aSize(aArr, Len(aArr) - 1)
Return aArr

Pegadinhas

Apagar varios — modo correto

// ERRADO — de cima pra baixo, indices ficam desalinhados
For i := 1 To Len(aArr)
    If aArr[i] == "X" ; aDel(aArr, i) ; EndIf
Next

// CERTO — de tras pra frente
For i := Len(aArr) To 1 Step -1
    If aArr[i] == "X"
        aDel(aArr, i)
        aSize(aArr, Len(aArr) - 1)
    EndIf
Next

Parâmetros

NomeTipoObrigatórioDescrição
aArrArraysimArray de origem.
nPosNumericsimPosicao do elemento a remover (1-base).

Veja também