Jump to content
Tatia

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

Recommended Posts

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

Edited by Tatia

Share this post


Link to post
Share on other 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

  • Vote 1

Share this post


Link to post
Share on other 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

Edited by Tatia

Share this post


Link to post
Share on other 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

Edited by nelsonr
  • Vote 1

Share this post


Link to post
Share on other 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?

Share this post


Link to post
Share on other sites
nelsonr

Depende do que pretendes encontrar, mas podes definir outros padrões e usar o Regex.Match para extrair do ficheiro

  • Vote 1

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

  • Vote 1

Share this post


Link to post
Share on other 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

Edited by Tatia

Share this post


Link to post
Share on other 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.

  • Vote 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.