Tatia Posted August 10, 2013 at 05:50 PM Report #521420 Posted August 10, 2013 at 05:50 PM (edited) 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 August 12, 2013 at 08:00 AM by Tatia
nelsonr Posted August 10, 2013 at 10:44 PM Report #521425 Posted August 10, 2013 at 10:44 PM 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 1 Report
Tatia Posted August 11, 2013 at 01:54 AM Author Report #521430 Posted August 11, 2013 at 01:54 AM (edited) 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 August 11, 2013 at 06:20 AM by Tatia
nelsonr Posted August 11, 2013 at 08:55 AM Report #521432 Posted August 11, 2013 at 08:55 AM (edited) 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 August 11, 2013 at 08:56 AM by nelsonr 1 Report
Tatia Posted August 11, 2013 at 01:27 PM Author Report #521440 Posted August 11, 2013 at 01:27 PM 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?
nelsonr Posted August 11, 2013 at 02:50 PM Report #521445 Posted August 11, 2013 at 02:50 PM Depende do que pretendes encontrar, mas podes definir outros padrões e usar o Regex.Match para extrair do ficheiro 1 Report
Tatia Posted August 11, 2013 at 03:27 PM Author Report #521449 Posted August 11, 2013 at 03:27 PM 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
nelsonr Posted August 11, 2013 at 03:50 PM Report #521450 Posted August 11, 2013 at 03:50 PM 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 1 Report
Tatia Posted August 11, 2013 at 04:01 PM Author Report #521451 Posted August 11, 2013 at 04:01 PM (edited) É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 August 11, 2013 at 05:34 PM by Tatia
nelsonr Posted August 11, 2013 at 07:15 PM Report #521464 Posted August 11, 2013 at 07:15 PM 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. 1 Report
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now