none
Que erro é este????????

    Question

  •  Ola Galera esta dando um erro na hora q eu vo armazenar informações em uma array, tem como solucionar o erro. meu codigo esta logo em baixo:

     

    Protected Sub BtnSalvar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles BtnSalvar.Click

    Dim arrLista As String()

    arrLista = New String() {}

    Dim recebe As String

    Dim i, k As Integer

    If arrLista.GetUpperBound(0) = 0 Then

    arrLista(0) = txtNome.Text

    Else

    i = arrLista.GetUpperBound(0)

    arrLista(i + 1) = txtNome.Text

    End If

    For k = arrLista.GetUpperBound(0) To 0

    recebe = arrLista(k).ToString & vbCrLf

    Next

    End Sub

     

    Este é erro q esta dando.

    Erro de Servidor no Aplicativo '/WebAjax'.


    O índice estava fora dos limites da matriz.

    Descrição: Ocorreu uma exceção não tratada durante a execução da atual solicitação da Web. Examine o rastreamento de pilha para obter mais informações sobre o erro e onde foi originado no código.

    Detalhes da Exceção: System.IndexOutOfRangeException: O índice estava fora dos limites da matriz.

    Erro de Origem:

    Linha 13:         Else
    Linha 14:             i = arrLista.GetUpperBound(0)
    Linha 15:             arrLista(i + 1) = txtNome.Text
    Linha 16:         End If
    Linha 17: 

    Wednesday, May 21, 2008 5:24 PM

Answers

  • Olá,

     

    Você pode fazer isso com um List que fica mais facil de controla , e guarda os valores no ViewState da pagina exemplo :

     

    Code Snippet

    Public Partial Class WebForm1

        Inherits System.Web.UI.Page

     

        Public Property ArrList() As List(Of String)

            Get

                Return Me.ViewState("arrList")

            End Get

            Set(ByVal value As List(Of String))

                Me.ViewState("arrList") = value

            End Set

        End Property

     

        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

            'Cria a lista

            If Not Page.IsPostBack Then

                ArrList = New List(Of String)

            End If

        End Sub

     

     

        Protected Sub Button1_click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click

            'Adiciona item na lista

            ArrList.Add(txtNome.Text)

        End Sub

     

        Protected Sub Button2_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button2.Click

            Label1.Text = ""

            'Mostra todos os itens

            For Each valores As String In ArrList

                Label1.Text += valores + "<br />"

            Next

        End Sub

    End Class

     

     

    Se a resposta for útil por favor não esqueça de marca.
    Abraço,

     

     

     

    Wednesday, May 21, 2008 6:39 PM

All replies

  • Olá,

     

    Eu não consegui entender o objetivo mais quando você utiliza o método GetUpperBound(0), você pega o tamanho da primeira dimensão do seu Array , por exemplo se o seu Array suporta 10 itens o retorno é 10 ai você adiciona mais 1 fica 11 fora do indice suportado !!

     

    Code Snippet

    If arrLista.GetUpperBound(0) = 0 Then

    arrLista(0) = "txtNome.Text"

    Else

    i = arrLista.GetUpperBound(0)

    arrLista(i + 1) = "txtNome.Text"

    End If

     

     

     

    Se a resposta for útil por favor não esqueça de marca.
    Abraço,
    Wednesday, May 21, 2008 6:00 PM
  • Meu objetivo é o seguinte:

    tenho um formulario q o usuario pode cadastrar 3 cursos, so q eu uso o memo TextBox e tenho um Botão Salvar e outro Inserir.

    Bom Quando o cara colocar o 1 curso e clicar em salvar quero q ele fique armazenado em uma posição do Array, depois ele colocar a 2 opção mesma coisa a 3 mesma coias e no final quero pegar este 3 valores se ele estiver preenchido os 3 e enviar os dados do formulario por e-mail.

    Ultilizo WD e VB.NET  se vc estiver uma dica pra mim dar ficarei grato.

     

    Fiquem com Deus.

     

    Wednesday, May 21, 2008 6:10 PM
  • Olá,

     

    Você pode fazer isso com um List que fica mais facil de controla , e guarda os valores no ViewState da pagina exemplo :

     

    Code Snippet

    Public Partial Class WebForm1

        Inherits System.Web.UI.Page

     

        Public Property ArrList() As List(Of String)

            Get

                Return Me.ViewState("arrList")

            End Get

            Set(ByVal value As List(Of String))

                Me.ViewState("arrList") = value

            End Set

        End Property

     

        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

            'Cria a lista

            If Not Page.IsPostBack Then

                ArrList = New List(Of String)

            End If

        End Sub

     

     

        Protected Sub Button1_click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click

            'Adiciona item na lista

            ArrList.Add(txtNome.Text)

        End Sub

     

        Protected Sub Button2_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button2.Click

            Label1.Text = ""

            'Mostra todos os itens

            For Each valores As String In ArrList

                Label1.Text += valores + "<br />"

            Next

        End Sub

    End Class

     

     

    Se a resposta for útil por favor não esqueça de marca.
    Abraço,

     

     

     

    Wednesday, May 21, 2008 6:39 PM
  • Daniel me descupa, mais o q seria este

    List(Of String), no meu codigo esta dando erro aqui.

     

    Type'List' is not defined.

     

    Ultilizo WD,Fram2.0 vb.net

    Wednesday, May 21, 2008 7:27 PM
  • Olá,

     

    List e uma lista tipada (generic), similar ao ArrayList so que você seta o tipo da lista ,nesse caso o tipo e string então a lista deve receber somente string, mais você poderia passar qualquer valor int,long,char .......

    para saber mais sobre isso você pode ver nesse link

     

    http://msdn.microsoft.com/en-us/library/6sh2ey19.aspx

     

    Sobre o código testei na minha maquina antes de postar e funcionou normal , quando você diz que utiliza WD você quer dizer o que ?

     

    Se a resposta for útil por favor não esqueça de marca.
    Abraço,

    Wednesday, May 21, 2008 7:38 PM
  • WebDeveloper2005

     

    Wednesday, May 21, 2008 7:54 PM