• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

catm

[Resolvida] Apagar elementos de um array

13 mensagens neste tópico

tenho uma estrutura de dados  composta heterogenea. como é que eu posso apagar um registo do array? é que posso um array dinamico sem limite de registos. ja tentei colocar erase e depois o nome do vector mas apaga o registo todo. eu so queria era que apagasse o registo mas eu pudesse la colocar outro no lugar dakele.deixo codigo em baixo.

Private Sub Command3_Click()
List1.Clear
ReDim Preserve v(contador + 1)
    v(contador) = carro ' variavel da estrutura que criei no modulo
    
   contador = contador + 1
   Label8.Caption = contador
   

for a = 0 to contador-1
List1.AddItem v(a).modelo & v(a).cor & v(a).unidades & s  ' elementos do array
            Next a

Private Sub Command6_Click()
For d = 0 To contador - 1
   Erase v
Next d

End Sub

agradeço resposta

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Olá,

Não entendi o que queres uma vez que estás a usar um erase. Queres limpar o array, é isso, ou apenas alguns registos ? éÉ que o erase limpa o array todo.

Se queres apenas apagar alguns registos, crias um novo array e copias para lá apenas os valores que queres.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

OLA. Pois eu ja percebi que o erase me apaga tudo. so que n sei o que utilizar. o que eu kero é apagar um determinado registo. se inseri por exemplo até 30 registo e quero apagar o registo nr 20, não sei como fazer.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Uma opção mais rápida, mas que gasta mais memória é criar uma espécie de campo eliminado, e ao eliminares um registo colocas o campo desse registo a verdadeiro. Desta maneira sabes que ele está eliminado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

so se eu criar uma textbox para introduzir o nr do registo a apagar e ir por ai

k axam?

mas depois em vex do contador me contar akele nr de registos teria de me contar menos um registo.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

so se eu criar uma textbox para introduzir o nr do registo a apagar e ir por ai

k axam?

mas depois em vex do contador me contar akele nr de registos teria de me contar menos um registo.

Mas tu não sabes o registo que queres apagar ou como apagar?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Vamos lá clarificar a pergunta: tu queres apagar um registo de um array mas não sabes qual é o registo ?

Explica melhor ... não comas palavras.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ok. vou ser  explicita.

eu tenho akele codigo que mostrei. aquele codigo pertence a um vector ilimitado de nome v( ). Ou seja, eu introduzo os registos, aqueles registos ficam guardados no vector e tenho um botão para me mostrar todos os registos que inseri até ao momento.

O que eu kero é saber como apago um registo.

Ou seja, imaginando que até ao momento eu introduzo 16 registos por exemplo. Mas de repente apetece-me apagar o registo 10. Como é que eu faço?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Aqui vai um exemplo do que já te tinha dito:

    ' Definição de um novo e temporário array
    Dim novoV() As String
    Dim y As Byte
    
    ReDim Preserve novoV(0)
    
    For y = 0 To UBound(v)
       ' Registo a apagar (ou seja não será gravado no novo array)
        If v(y) <> "item 15" Then
            ReDim Preserve novoV(UBound(novoV) + 1)
            novoV(UBound(novoV)) = v(y)
        End If
    Next
    
    ' apaga os dados e copia o array novo para
    Erase v
    v = novoV
     
    ' mostra os resultados
    For y = 0 To UBound(v)
       Debug.Print v(y)
    Next

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

obrigado pela ajuda mas ta a dar erro na parte de codigo que diz <>

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Por falta de informação do utilizador e por existirem respostas aceitáveis à pergunta efectuada, esta questão foi marcada como resolvida.

Jorge Paulino

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora