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
- Nao reduz tamanho — esquece esse detalhe e seu Len(aArr) continua igual + tem um NIL "sujeira" no fim.
- NIL no fim quebra loops com indice — sempre cheque ou faca aSize.
- Apagar varios em loop — itere de tras pra frente, ou os indices mudam no meio do loop.
- aIns e o par — insere elemento (desloca os outros pra frente).
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
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
aArr | Array | sim | Array de origem. |
nPos | Numeric | sim | Posicao do elemento a remover (1-base). |