Ir para conteúdo
Fórum Script Brasil
  • 0

Dúvidas com o método Split()


Fab

Pergunta

Olá a todos. Estou a aprender a programar em VB2008, então estou criando uma simples aplicação de contatos, que usa IO. Estou conseguindo registrar os contatos tranquilamente, mas para recuperar, estou tendo problemas: O que desejo é abrir um arquivo, ler suas linhas e armazenar cada linha em um array usando um delimitador. Segue o código:

Private Sub btBuscar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btBuscar.Click
        Dim conteudo(5) As String 'Declara um array de 5 posicoes(0 a 4)
        If (txtContato.Text = "") Then
            MsgBox("Digite o nome do contato.", MsgBoxStyle.Critical, "Erro")
        Else
            Dim fluxo As StreamReader
            Dim linha As String

            If (Exists("C:\Contatos\" & txtContato.Text)) Then
                fluxo = New StreamReader("C:\Contatos\" & txtContato.Text)
                linha = fluxo.ReadLine
                conteudo = linha.Split("---")

                MsgBox("Linha 0: " & conteudo(0) & vbCrLf & "Linha 1: " & conteudo(1) & vbCrLf & "Linha 2: " & conteudo(2))

            Else
                MsgBox("Arquivo não pode ser encontrado.", MsgBoxStyle.Critical, "Erro")
                txtContato.Text = ""
                txtContato.Focus()
            End If
        End If
    End Sub

Usei no Split() a sequencia "---" para quebrar a linha nessa parte. Só que apenas a 1º linha é salva no array. Gostaria de saber onde estou errando e se essa é uma solução boa, ou existem outras.

Grato pela atenção.

Editado por quintelab
Adicionado BBCode Code
Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Você precisa fazer um while para ler todas as linhas, exemplo que eu utilizo:

Dim ArrayLinha As Array

            Do While Not reader.EndOfStream
                ArrayLinha = Split(reader.ReadLine, ";", -1, 1)
            Loop

Abraços...

Link para o comentário
Compartilhar em outros sites

  • 0

Muito obrigado pela sua ajuda. Fiz o que você me recomendou, mas ainda não obtive sucesso:

Private Sub btBuscar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btBuscar.Click
        Dim conteudo As Array 'Declara um array
        If (txtContato.Text = "") Then
            MsgBox("Digite o nome do contato.", MsgBoxStyle.Critical, "Erro")
        Else
            Dim fluxo As StreamReader
            Dim linha As String

            If (Exists("C:\Contatos\" & txtContato.Text)) Then
                fluxo = New StreamReader("C:\Contatos\" & txtContato.Text)
                linha = fluxo.ReadLine

                Do While Not fluxo.EndOfStream
                    conteudo = Split(fluxo.ReadLine, "---", -1, 1)
                Loop

                MsgBox("Linha 0: " & conteudo(0) & vbCrLf & "Linha 1: " & conteudo(1) & vbCrLf & "Linha 2: " & conteudo(2))

            Else
                MsgBox("Arquivo não pode ser encontrado.", MsgBoxStyle.Critical, "Erro")
                txtContato.Text = ""
                txtContato.Focus()
            End If
        End If
    End Sub

Agora me aparece um erro dizendo que o array foi acessado fora de seus limites: Index was outside the bounds of the array

Fico no aguardo de mais ajuda dos colegas.

Boa noite.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...