Garu Postado Agosto 21, 2008 Denunciar Share Postado Agosto 21, 2008 Prezados, Tenho um arquivo de log em formato .txt, gostaria de montar um programa que possa localizar um determinado valor nesse arquivo. Alguém pode me ajudar? Pelo menos dizer por onde começo...Desde já grato,_____________Garu Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Agosto 22, 2008 Denunciar Share Postado Agosto 22, 2008 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 IfJá 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Garu Postado Agosto 27, 2008 Autor Denunciar Share Postado Agosto 27, 2008 (editado) 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 Agosto 27, 2008 por Garu Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Agosto 31, 2008 Denunciar Share Postado Agosto 31, 2008 Use o método IndexOf da string para procurar por uma substring específica, ou seja, a linha...If line.Substring(0) = busca1 Then ... iria ser: If line.IndexOf(busca1)>=0 ThenCerto? ;)Abraços,Graymalkin Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Garu Postado Setembro 2, 2008 Autor Denunciar Share Postado Setembro 2, 2008 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 IfFavor moderadores, marcar tópico como resolvido. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Garu
Prezados,
Tenho um arquivo de log em formato .txt, gostaria de montar um programa que possa localizar um determinado valor nesse arquivo.
Alguém pode me ajudar? Pelo menos dizer por onde começo...
Desde já grato,
_____________Garu
Link para o comentário
Compartilhar em outros sites
4 respostass a esta questão
Posts Recomendados
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.