none
Array ( Retirar e colocar elementos )

    Question

  • Caro Colegas

    Estou precisando saber como rtirar e colocar elementos em um array, mantendo o que já está lá.

    Ex:

    Dim teste() As String = {"A", "B", "C", "D"}

    Como posso retirar o ELEMENTO ("B"), mantendo o resto, vejam preciso retirar e não limpar seu valor.

    OU

    Como posso acréscentar um novo valor ("E"), mantendo os ja existêntes.

     

    Obrigado a Todos

    Bene

     

    Friday, January 26, 2007 11:54 AM

Answers

  • Benê,

    1) Até onde eu sei, só se você já tivesse uma lista pronta para inserir em outra.

    2) Poderia ser algo assim:

    Dim lista As New Dictionary(Of String, List(Of String))
    lista.Add(
    "A", New List(Of String))
    lista(
    "A").Add("A1")
    lista(
    "A").Add("A2")
    lista(
    "A").Add("A3")

    lista.Add(
    "B", New List(Of String))
    lista(
    "B").Add("B1")
    lista(
    "B").Add("B2")
    lista(
    "B").Add("B3")

    Abraços,
    Francisco
    OK, Computer - http://thespoke.net/blogs/fbcjunior/default.aspx

    Friday, January 26, 2007 1:09 PM
  • Bene,

    Na verdade seu array tem duas dimensões. Veja um exemplo:

            Dim col As New List(Of List(Of String))

            col.Add(New List(Of String))
            col(0).Add("ContasReceberDetalhesA")
            col(0).Add("CADCR.DBF")
            col(0).Add("0")

            col.Add(New List(Of String))
            col(1).Add("ContasReceberDetalhesB")
            col(1).Add("INATCR.DBF")
            col(1).Add("0")

            col.Add(New List(Of String))
            col(2).Add("ContasReceberDetalhesC")
            col(2).Add("MOVCR.DBF")
            col(2).Add("0")

            ' Para Remover um item qualquer, se for do List de string, por exemplo, quero
            ' remover o "INATCR.DBF"
            col(1).Remove("INATCR.DBF")

            ' Se for para remover um conjunto inteiro
            col.RemoveAt(0)

            ' Se eu quiser alterar um valor de um dos lists
            col(1)(0) = "ContasAlteradasX"

            ' Se eu quiser substituir um conjunto todo de informação:
            Dim x As New List(Of String)
            x.Add("A")
            x.Add("B")
            x.Add("C")
            col(0) = x

            ' Percorrendo o resultado...
            For Each lista As List(Of String) In col
                For Each s As String In lista
                    Console.Write(s & " ")
                Next
                Console.WriteLine("")
                Console.WriteLine("-----")
            Next

    Abraços,
    Francisco
    OK, Computer - http://thespoke.net/blogs/fbcjunior/default.aspx

    Friday, January 26, 2007 3:51 PM

All replies

  • Bene,

    Para remover o elemento você vai ter que declarar outro array com uma posição a menos e só colocar no array de destino os elementos que você deseja manter no array.

    Para adicionar um novo elemento ao array, você faz algo assim:

    ReDim Preserve teste(teste.Length) ' adiciona mais um elemento
    teste(teste.Length -1) = "E"

    Só que eu sugiro que você use uma coleção genérica que é dinamica e você não vai ter que ficar lidando com este tipo de coisa ao remover ou adicionar itens a arrays:

    Dim teste as List(Of String)
    teste.Add("A")
    teste.Add("B")
    teste.Remove("B")
    teste.Add("C")

    etc...

    Abraços,
    Francisco
    OK, Computer - http://thespoke.net/blogs/fbcjunior/default.aspx

    Friday, January 26, 2007 12:05 PM
  • Caro Francisco.

    Acho que entendi sua colocação.

    Gostaria de saber se é possivel criar a coloção já com seus valores determinados EX:

    Dim teste as List(Of String) = {"A", "B", "C", "D"}

    Por favor considere a sintax acima como um exemplo, foi a forma que encontrei para desmonstrar o que desejo.

    Além disto vou precisar que os elementos sejam multidimencionais, tem como?

     

    Obrigado

    Bene

    Friday, January 26, 2007 12:30 PM
  • Benê,

    1) Até onde eu sei, só se você já tivesse uma lista pronta para inserir em outra.

    2) Poderia ser algo assim:

    Dim lista As New Dictionary(Of String, List(Of String))
    lista.Add(
    "A", New List(Of String))
    lista(
    "A").Add("A1")
    lista(
    "A").Add("A2")
    lista(
    "A").Add("A3")

    lista.Add(
    "B", New List(Of String))
    lista(
    "B").Add("B1")
    lista(
    "B").Add("B2")
    lista(
    "B").Add("B3")

    Abraços,
    Francisco
    OK, Computer - http://thespoke.net/blogs/fbcjunior/default.aspx

    Friday, January 26, 2007 1:09 PM
  • Caro Francisco

    Estou começando a entender quais as formas de solucionar minhas questões...

    Hoje tenho o seguinte Array criado.

    Public myTabelas(,) As String =  {{"ContasReceberDetalhesA", "CADCR.DBF", "0"}, _
                                                              {"ContasReceberDetalhesB", "INATCR.DBF", "0"
    }, _
                                                              {ContasReceberDetalhesC", "MOVCR.DBF", "0"}}

    Observe que myTabelas é um Array Tridimensional.

    Surge agora a necessidade de retirar ou colocar elementos neste array e isto dependerá de um CheckListBox em meu form a questão é:

    Coleção é uma saida, ou devo procurar algo mais prático?

    Obrigado

    Bene

    Friday, January 26, 2007 1:29 PM
  • Benê,

    É minha opinião pessoal: sempre que tiver que atualizar valores dinamicamente em uma lista, eu prefiro usar coleções ao invés de arrays.

    Abraços,
    Francisco
    OK, Computer - http://thespoke.net/blogs/fbcjunior/default.aspx

    Friday, January 26, 2007 1:38 PM
  • Blz.. Francisco

    mas, poderia me dar um breve exemplo de como faze-lo já que tenho que usar Array Tridimencional?

    Obrigado

    Bene

    Friday, January 26, 2007 2:47 PM
  • Bene,

    Na verdade seu array tem duas dimensões. Veja um exemplo:

            Dim col As New List(Of List(Of String))

            col.Add(New List(Of String))
            col(0).Add("ContasReceberDetalhesA")
            col(0).Add("CADCR.DBF")
            col(0).Add("0")

            col.Add(New List(Of String))
            col(1).Add("ContasReceberDetalhesB")
            col(1).Add("INATCR.DBF")
            col(1).Add("0")

            col.Add(New List(Of String))
            col(2).Add("ContasReceberDetalhesC")
            col(2).Add("MOVCR.DBF")
            col(2).Add("0")

            ' Para Remover um item qualquer, se for do List de string, por exemplo, quero
            ' remover o "INATCR.DBF"
            col(1).Remove("INATCR.DBF")

            ' Se for para remover um conjunto inteiro
            col.RemoveAt(0)

            ' Se eu quiser alterar um valor de um dos lists
            col(1)(0) = "ContasAlteradasX"

            ' Se eu quiser substituir um conjunto todo de informação:
            Dim x As New List(Of String)
            x.Add("A")
            x.Add("B")
            x.Add("C")
            col(0) = x

            ' Percorrendo o resultado...
            For Each lista As List(Of String) In col
                For Each s As String In lista
                    Console.Write(s & " ")
                Next
                Console.WriteLine("")
                Console.WriteLine("-----")
            Next

    Abraços,
    Francisco
    OK, Computer - http://thespoke.net/blogs/fbcjunior/default.aspx

    Friday, January 26, 2007 3:51 PM