Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Tatia

[Resolvido] - Procurar valor de um txt e apresentar num textbox

Mensagens Recomendadas

Tatia

Boas amigos,

Mais uma vez procuro a vossa ajuda, hoje criei um novo projecto para adequerir mais alguns conhecimentos e estou com grandes dificuldades...

Iniciei novo projecto.

Adicionei um botão

Criei um textbox.

O que pretendo?

Pretendo que ao abrir um ficheiro de texto o programa procure o seguinte:

host_name=localhost user_friendly_name="Thomson TG787" dns_name=Unknown-00-1f-9f-3e-af-58

e apenas apresentar o seguinte valor no textbox: 00-1f-9f-3e-af-58

Alguém se disponibiliza a explicar o mais detalhado possível por favor, porque como disse eu não percebo nada disto e quero aprender alguma coisa. ;)

Nota: Este ficheiro esta constantemente em actualização logo se eu definir a linha onde se encontra o conteúdo não vai dar...

Editado por Tatia

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
nelsonr

Boas,

verifica se isto ajuda:

Importa primeiro a biblioteca para utilizar as regular expressions

Imports System.Text.RegularExpressions

' Ler conteúdo do ficheiro para uma string
Dim conteudoFicheiro As String = System.IO.File.ReadAllText("c:\ficheiro.txt")

' Definir o padrao de busca
Dim padrao As String = "dns_name=\w+-(?<address>([a-fA-F0-9-]*))"

' Confrontar o conteúdo do ficheiro com o padrao
Dim match As Match = Regex.Match(conteudoFicheiro, padrao)

' Se encontrou
If match.Success Then
' Mostrar o resultado encontrado no grupo com o nome macAddress
MessageBox.Show(match.Groups("address").Value)
End If

Em vez da Messagebox.Show, depois podes assignar o resultado a uma textbox

  • Voto 1

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Tatia

Boas amigo obrigado pela sua resposta...

o meu problema e que ao abrir este ficheiro ele vai ter varios exemplo abaixo.

host_type=Generic host_name=Unknown-00-26-68-72-20-90 user_friendly_name=Unknown-00-26-68-72-20-90
host_name=Unknown-bc-3b-af-6a-2c-8f user_friendly_name=Unknown-bc-3b-af-6a-2c-8f
host_name=Unknown-7c-c3-a1-e2-79-f8 user_friendly_name=Unknown-7c-c3-a1-e2-79-f8
host_name=localhost user_friendly_name="Thomson TG787" dns_name=Unknown-00-1f-9f-3e-af-58
host_name=Unknown-00-03-fa-00-00-01 user_friendly_name=Unknown-00-03-fa-00-00-01 dns_name=Unknown-00-03-fa-00-00-01
host_name=Unknown-00-03-fa-00-00-02 user_friendly_name=Unknown-00-03-fa-00-00-02 dns_name=Unknown-00-03-fa-00-00-02

Eu apenas pretendo que ele me mostre o mac que fica na linha:

host_name=localhost user_friendly_name="Thomson TG787" dns_name=Unknown-00-1f-9f-3e-af-58

Se usar como me dizes ele vai achar este mac, mas ao abrir outro ficheiro de texto onde o mac já e outro ele não vai localizar certo?

Edite:

Tentei varias maneiras e nao consegui implementar isto no código eu não percebo mesmo nada ;)

se poderem ajudar eu agradeço vou deixar actualmente o código, lembrando que apenas tenho 1 botão e 1 textbox.

Imports System.Text.RegularExpressions

Public Class Form1

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
 OpenFileDialog1.Filter = "User (*.ini)|*.ini|User-x (*.ini)|*.ini"
 OpenFileDialog1.ShowDialog()

End Sub

End Class

Editado por Tatia

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
nelsonr

No evento de um botão por exemplo, abre formulário a pedir um ficheiro .ini

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
	OpenFileDialog1.Filter = "User (*.ini)|*.ini|User-x (*.ini)|*.ini"
	OpenFileDialog1.ShowDialog()
End Sub

Ao selecionar um ficheiro válido

Private Sub OpenFileDialog1_FileOk(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles OpenFileDialog1.FileOk
	' Ler conteúdo do ficheiro para uma string
	Dim conteudoFicheiro As String = System.IO.File.ReadAllText(OpenFileDialog1.FileName)

	' Definir o padrao de busca
	Dim padrao As String = "user_friendly_name=""Thomson TG787"" dns_name=\w+-(?<address>([a-fA-F0-9-]*))"

	' Confrontar o conteúdo do ficheiro com o padrao
	Dim match As Match = Regex.Match(conteudoFicheiro, padrao)

	' Se encontrou
	If match.Success Then
		' Mostrar o resultado encontrado no grupo com o nome address
		MessageBox.Show(match.Groups("address").Value)
	End If

End Sub

Editado por nelsonr
  • Voto 1

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Tatia

Boas amigo muito obrigado, este passo esta feito agora so preciso de saber como faço para dar continuidade tipo quero colocar mais ou 5 textbox para me apresentar outros valores...

onde diz

Dim padrao As String = "user_friendly_name=""Thomson TG787"" dns_name=\w+-(?<address>([a-fA-F0-9-]*))"

basta eu acrescentar tipo padrao1 para continuar?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Tatia

Agradeço mesmo a tua boa vontade de ajudar amigo não e todos os dias que se vê users assim como tu em um fórum...

Bom eu pretendia encontrar so mais estes valores....

ap_pin=72512067
ssid_id=0 ssid="Thomson8F997A"
WEPkey=E31CADEE66
WPAPSKkey=E31CADEE66
wps=disabled
channel=9

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
nelsonr

Poderá ser algo assim:

' Ler conteúdo do ficheiro para uma string
Dim conteudoFicheiro As String = System.IO.File.ReadAllText(OpenFileDialog1.FileName)

'  dns_name
Dim match As Match = Regex.Match(conteudoFicheiro, "(user_friendly_name=""Thomson TG787"").*dns_name=\w+-(?<dns_name>([a-fA-F0-9-]*))")
If match.Success Then
TextBox1.Text = match.Groups("dns_name").Value
End If

'  ap_pin
Dim match_ap_pin As Match = Regex.Match(conteudoFicheiro, "ap_pin=(?<ap_pin>(\d*))")
If match_ap_pin.Success Then
TextBox2.Text = match_ap_pin.Groups("ap_pin").Value
End If

'  ssid_id
Dim match_ssid_id As Match = Regex.Match(conteudoFicheiro, "ssid_id=(?<ssid_id>(\d*))")
If match_ssid_id.Success Then
TextBox3.Text = match_ssid_id.Groups("ssid_id").Value
End If

'  ssid
Dim match_ssid As Match = Regex.Match(conteudoFicheiro, "ssid=""(?<ssid>(\w*))""")
If match_ssid.Success Then
TextBox4.Text = match_ssid.Groups("ssid").Value
End If

'  WEPkey
Dim match_WEPkey As Match = Regex.Match(conteudoFicheiro, "WEPkey=(?<WEPkey>([a-fA-F0-9]*))")
If match_WEPkey.Success Then
TextBox5.Text = match_WEPkey.Groups("WEPkey").Value
End If

'  WPAPSKkey
Dim match_WPAPSKkey As Match = Regex.Match(conteudoFicheiro, "WPAPSKkey=(?<WPAPSKkey>([a-fA-F0-9]*))")
If match_WPAPSKkey.Success Then
TextBox6.Text = match_WPAPSKkey.Groups("WPAPSKkey").Value
End If

'  wps
Dim match_wps As Match = Regex.Match(conteudoFicheiro, "wps=(?<wps>(\w*))")
If match_wps.Success Then
TextBox7.Text = match_wps.Groups("wps").Value
End If

'  channel
Dim match_channel As Match = Regex.Match(conteudoFicheiro, "channel=(?<channel>(\d*))")
If match_channel.Success Then
TextBox8.Text = match_channel.Groups("channel").Value
End If

  • Voto 1

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Tatia

És um pro na matéria amigo quem me dera saber trabalhar assim como tu ;)

A mina questão esta resolvida, agora já percebi como funciona. :)

-----------------//---------------

Agora vou procurar uma forma de como guardar os valores das textbox em um arquivo...

Tipo a minha intenção e reunir vários dados dos aparelhos thomsom e guardar tudo em um único arquivo... (Tipo base de dados)

Mais uma vez muito obrigado por tudo, todo o mérito e teu e vou colocar na aplicação os teus créditos pois mereces mesmo.

Um grande abraço.

Edite:

Afinal ainda não percebi bem isto hehee

' WPAPSKkey
 Dim match_WPAPSKkey As Match = Regex.Match(conteudoFicheiro, "WPAPSKkey=(?<WPAPSKkey>([a-fA-F0-9]*))")
 If match_WPAPSKkey.Success Then
	 TextBox7.Text = match_WPAPSKkey.Groups("WPAPSKkey").Value
 End If

Esse comando mostra-me bem se for o valor: E31CADEE66

Mas em alguns casos o valor esta personalizado pelo utilizador.

Exemplo: Tatia_PT1984 ou qualquer outro nesse modo como colocaria aqui neste campo: ([a-fA-F0-9]*))")

Edite 2:

Ja resolvi coloquei assim:

' WPAPSKkey
 Dim match_WPAPSKkey As Match = Regex.Match(conteudoFicheiro, "WPAPSKkey=(?<WPAPSKkey>([\w-\d]*))")
 If match_WPAPSKkey.Success Then
	 TextBox7.Text = match_WPAPSKkey.Groups("WPAPSKkey").Value
 End If

Podem dar este tópico como [Resolvido]

Mais uma vez obrigado ao forum e um especial obrigado ao membro nelsonr.

Abraço

Editado por Tatia

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
nelsonr

O padrão que tinha indicado (a-fA-F0-9), era porque achava que o conteúdo desse campo era hexadecimal, se for alfanumérico, basta o \w+.

Esse que definiste [\w-\d]* indica que procuras qualquer sequencia alfanumerica, numerica ou -, o que também server para esse caso.

Ainda bem que ficou resolvido.

  • Voto 1

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.