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

Buscar valor em arquivo .txt


Garu

Pergunta

4 respostass a esta questão

Posts Recomendados

  • 0

O básico para isso é abrir o arquivo para leitura e ler o conteúdo dele, procurando o texto desejado. Se o seu arquivo for pequeno, você pode usar o código abaixo:

Dim f As New IO.StreamReader("c:\arquivo.txt")
Dim conteúdo As String
Dim pos As Integer

conteúdo = f.ReadToEnd()
f.Close()

pos = conteúdo.IndexOf("O quê procurar!")

If pos >= 0 Then
    MessageBox.Show("Texto encontrado na posição: " & pos)
Else
    MessageBox.Show("Texto não encontrado!")
End If

Já se for um arquivo grande é recomendável que você não use o método ReadToEnd (que lê o arquivo todo), mas sim ir lendo linha a linha até achar o dado desejado. Para isso existe o método ReadLine().

Certo? ;)

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Beleza! funcionou...

Agora seguinte: Consigo abrir, pesquisar a linha e jogar a linha na caixa de texto, preciso localizar uma palavra dentro da linha, aí sim jogar a linha inteira... tem como?

Dim total As Integer = 0
        Dim fileName As String = "c:\arquivo.txt"
        Dim busca1 As String = txtChave.Text

        ' Armazena num Array linha a linha
        Dim lines() As String = IO.File.ReadAllLines(fileName)

        ' Loop que irá mostrar linha a linha
        '#Este loop só funciona se digitar a linha inteira
        '#ele não localiza um valor específico em uma linha.
        For Each line As String In lines

            'Aqui é que está o meu problema...
            'Eu não consigo fazer a busca por uma palavra...
            If line.Substring(0) = busca1 Then

                'Essa linha é só pra teste
                MsgBox(line)
                'Joga o resultado na caixa de texto
                txtLinhas.Text += line + vbCrLf
                Debug.WriteLine(line.ToString)
                total += 1
            End If
        Next

Editado por Garu
Link para o comentário
Compartilhar em outros sites

  • 0

Resolvido:

Dim file As String
        Dim LCasechave As String = txtChave.Text

        For Each file In Directory.GetFiles("C:\logs")
            'Lcase
            txtChave.Text = LCase(txtChave.Text)

            'Verifica se txtChave foi preenhida.
            If txtChave.Text <> "" Then
                Dim total As Integer = 0

                Dim fileName As String = file

                Dim busca1 As String = txtChave.Text

                'Armazena num Array linha a linha
                Dim lines() As String = IO.File.ReadAllLines(fileName)


                'O valor inicial de index é -1 porque o array começa em 0
                Dim index As Integer = -1
                'x = variável contadora
                Dim x As Integer = 0
                Dim i As Integer

                'Define "line" como uma linha do array lines:
                For Each line As String In lines
                    Dim LCaseline As String
                    LCaseline = LCase(line)
                    Do
                        'Usei o LBound para retornar o nº mínimo
                        'de linhas possível, assim, tenho o nº
                        'real de linhas...
                        For i = 0 To LBound(lines)
                            index += 1
                            index = LCaseline.ToString.IndexOf(busca1, index)
                            'Se index é diferente de 0...
                            If index >= 0 Then
                                'Jogo o conteúdo da linha no campo txtLinhas
                                txtLinhas.Text += file + vbCrLf + line + vbCrLf + vbCrLf

                                'e adiciono +1 ao contador x
                                x += 1
                            End If
                        Next
                    Loop Until index = -1
                    'Debug.WriteLine(line.ToString)
                    total += 1
                Next

            Else
                MsgBox("Informe um valor para a busca!")
            End If
        Next
        If txtLinhas.Text = "" Then
            MsgBox("Nenhum Registro encontrado!")
        End If

Favor moderadores, marcar tópico como resolvido.

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...