Alguém sabe como excluir elementos de um array?

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

labaroazul
Usuário Nível 2
Usuário Nível 2
Mensagens: 83
Registrado em: 26 Fev 2008 14:52
Localização: São Paulo - SP
Contato:

Alguém sabe como excluir elementos de um array?

Mensagem por labaroazul »

Bom dia, amigos! :))

Alguém sabe como faço para excluir elementos de um array permanentemente?

Estou tentando fazer assim:

Do while Len(aArray) > 0
ADEL(aArray,1)
EndDo

e já tentei fazer assim:

nCampos = Len(aArray)
For V = 1 to nCampos
ADEL(aArray, V)
Next

Só que ambos os métodos não excluem os elementos do Array. Se excluiem, deixam um espaço em branco porque, por exemplo, o Do While fica sendo executado eternamente e, quando eu uso o comando Len(aArray) após o For Next ele me dá o mesmo número de elementos que tinha antes. Deveria ter menos ou nenhum elemento (que é o que eu quero fazer!)
Windows XP Professional + Clipper 5.2e + Exospace + Dbase III Plus + SIX3 + NoDosImp + LXPic
"O trabalho afasta três males: o vício, a pobreza e o tédio." (Voltaire)
Site: http://www.labaroazul.xpg.com.br
Repositório: http://www.4shared.com/dir/31334106/e79 ... aring.html
MARCELOG
Usuário Nível 4
Usuário Nível 4
Mensagens: 546
Registrado em: 15 Mar 2005 16:54
Localização: Divinópolis/MG

Mensagem por MARCELOG »

Use assim:

ADEL(aArray, V,.T.)

MarceloG
Água mole em pedra dura tanto bate que até espirra!
Avatar do usuário
gvc
Colaborador
Colaborador
Mensagens: 1270
Registrado em: 23 Ago 2005 10:57

Mensagem por gvc »

[labaroazul]
Se é só para limpar:

aarray := {}

O ADEL apaga o valor da posição solicitada, move os elementos posteriores e coloca um Nil na última posição.
Vc deve dar um ASIZE para acertar o tamanho.

[MARCELOG]
Não conheço o terceiro parâmetro do ADEL. Não aparece na documentação que eu tenho. Para quê é?
"TRS-80/Sincler/Apple/PC - Clipper Winter 85, tlink 1.0 [pc 10 MHz - 640K] {NEZ 8000 2Kb RAM}"
{POG - Programação Orientada a Gambiarra}
MARCELOG
Usuário Nível 4
Usuário Nível 4
Mensagens: 546
Registrado em: 15 Mar 2005 16:54
Localização: Divinópolis/MG

Mensagem por MARCELOG »

Ops, é xHarbour:

ADel()
Deletes an element from an array.
Syntax
ADel( <aArray>, <nElement>, [<lShrink>] ) --> aArray

Arguments
<aArray>
A variable holding the array to delete an element from.
<nElement>
This is a numeric expression indicating the ordinal position of the array element to delete. It must be in the range between 1 and Len(<aArray>).
<lShrink>
Optionally, a logical value can be specified. If .T. (true) is passed, the length of the array is reduced by one element. The default value is .F. (false) leaving the number of elements in <aArray> unchanged. Return
The return value is a reference to <aArray>.
Description
The array function ADel() deletes the element at position <nElement> from the array <aArray>. All subsequent elements are shifted up by one position so that the last element contains the value NIL when the function returns. This default behaviour leaves the number of elements in the array unchanged.
If the third parameter <lShrink> is specified as .T. (true), the last element is removed from the array and the number of elements is reduced by 1.

Mas Asize() resolve ('inda' bem né?).

MarceloG
Água mole em pedra dura tanto bate que até espirra!
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Mas ADel() tem um terceiro parâmetro? Não seria apenas um erro de digitação?
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Pow! Postamos ao mesmo tempo. Tá explicado então. :)
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Responder