Jump to content

[Resolvido] Ler todas as linhas começadas por (xxxx)


Drak_PT
 Share

Recommended Posts

Ola a todos, alguém me pode explicar como posso ler todas as linhas de um ficheiro de texto começadas por exemplo em xxxxx e apresentar numa RichTextBox?

Tenho um código actualmente que me faz isso + ou - mas só me apresenta a primeira linha que contem o conteúdo ficando as restantes por apresentar.

Exemplo do texto.

22E04C 35DA338FFF
22E04C 5B6944F6F7
22E04D AD54AB4CB3
22E04E 1C34DB5371
22E04E 71F115B369
22E04E B8BAF8D525
22E04E B8BCA19018
22E04F 97B68AC1C6

Como posso fazer para apresentar todas as linhas que começa por 22E04E numa RichTextBox?

O pretendido seria apresentar na RichTextBox o seguinte:

1C34DB5371
71F115B369
B8BAF8D525
B8BCA19018

Actualmente uso este código:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
	' Passar por todas as linhas do ficheiro
	For Each linha As String In File.ReadAllLines(Environment.CurrentDirectory & "\Passwords\2\2\E\index.dat")

		' Caso o conteúdo da linha inicie pela palavra no TextBox1. Neste caso é 22E04E
		If linha.StartsWith(TextBox1.Text) Then

			' Procura a posição do caracter separador (espaço)
			Dim posSeparador = linha.IndexOf(" ")

			' Lê o conteúdo depois do caracter separador como Key do ficheiro, limpando qualquer espaço antes e depois
			Dim Key As String = linha.Substring(posSeparador).Trim()

			' O conteudo lido posSparador e apresentado na RichTextBox
			RichTextBox1.Text = Key
		End If
	Next

End Sub

Usando este código somente me e apresentado o valor da primeira linha 😞

Edited by Drak_PT
Link to comment
Share on other sites

Boas,

não testei, mas parece-me que o problema está nesta linha

RichTextBox1.Text = Key

Ou seja, está sempre a atribuir à richtextbox o valor da linha lido em vez de adicionar.

Para resolver deves ter de substituir:

RichTextBox1.Text = RichTextBox1.Text + Key

E talvez precises de adicionar também a mudança de linha (+Environment.NewLine)

Edited by nelsonr
Link to comment
Share on other sites

Nem acredito, tao pouco a mudar e eu passei aqui a noite toda.

É isso mesmo como colocas-te.

RichTextBox1.Text = RichTextBox1.Text + Key + Environment.NewLine

Muito obrigado.

Já agora eu uso este code para passar o nome do conteudo seleccionado numa ListView para uma TextBox.

Private Sub ListView1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListView1.SelectedIndexChanged
	If ListView1.SelectedItems.Count > 0 Then
		With ListView1.SelectedItems(0)
			TextBox4.Text = .Text
		End With
	Else
		TextBox4.Text = ""
	End If
End Sub

Porem ele passa o nome por inteiro tipo [XXXX22E04E]

Como e que posso fazer para ele remover o XXXX ficando apenas assim [22E04E] no texbox?

Link to comment
Share on other sites

Depende do que esse XXXX é.

Se for mesmo texto XXXX com o tamanho fixo, podes usar o SubString para ler uma parte da string.

Por exemplo:

TextBox4.Text = .Text.Substring(4)

Esses [] fazem parte do texto?

Se fizerem podes fazer algo assim para remover o texto XXXX:

TextBox4.Text = .Text.Replace("XXXX", "")
Edited by nelsonr
Link to comment
Share on other sites

Obrigado.

Consegui assim:

Private Sub ListView1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListView1.SelectedIndexChanged
    If ListView1.SelectedItems.Count > 0 Then
	    With ListView1.SelectedItems(0)
		    TextBox4.Text = .Text.Replace("xxxxxxx", "")
	    End With
    Else
	    TextBox4.Text = ""
    End If
   End Sub

Para alem disto e possível colocar um filtro do tipo se eu clicar em outro nome que não seja este começado por xxxxxxx

ele não copia para o textbox?

Edite: Resolvido Replace texto.

Edited by Drak_PT
Link to comment
Share on other sites

Podes verificar se o texto começa por determinado conteúdo

If ListView1.SelectedItems.Count > 0 And ListView1.SelectedItems(0).Text.StartsWith("xxxxxxx") Then
  TextBox4.Text = ListView1.SelectedItems(0).Text.Replace("xxxxxxx", "")
Else
  TextBox4.Text = ""
End If
Link to comment
Share on other sites

Podes verificar se o texto começa por determinado conteúdo

If ListView1.SelectedItems.Count > 0 And ListView1.SelectedItems(0).Text.StartsWith("xxxxxxx") Then
  TextBox4.Text = ListView1.SelectedItems(0).Text.Replace("xxxxxxx", "")
Else
  TextBox4.Text = ""
End If

Com esse code se clicar em outro nome que nao seja começado por xxxxxxx da este erro.

An unhandled exception of type 'System.ArgumentOutOfRangeException' occurred in System.Windows.Forms.dll
Additional information: InvalidArgument=Valor de '0' inválido para 'index'.
Link to comment
Share on other sites

Provavelmente o VB.NET deve fazer a validação do lado direito do And, mesmo que do lado esquerdo retorne falso.

Experimenta por assim:

TextBox4.Text = ""
If ListView1.SelectedItems.Count > 0 Then
If  ListView1.SelectedItems(0).Text.StartsWith("xxxxxxx") Then
	TextBox4.Text = ListView1.SelectedItems(0).Text.Replace("xxxxxxx", "")
End If
End If
Link to comment
Share on other sites

Provavelmente o VB.NET deve fazer a validação do lado direito do And, mesmo que do lado esquerdo retorne falso.

Experimenta por assim:

TextBox4.Text = ""
If ListView1.SelectedItems.Count > 0 Then
If  ListView1.SelectedItems(0).Text.StartsWith("xxxxxxx") Then
	TextBox4.Text = ListView1.SelectedItems(0).Text.Replace("xxxxxxx", "")
End If
End If

Sim era isso agora já deu. 🙂

Nao estou a precisar mas so para o caso de vir a fazer falta diz-me so se eu quiser verificar outro nome alem desse xxxxxxx como ficaria o code com dois nomes a verificar e a fazer replace?

Muito obrigado.

PS: So não sei porque o site não me permite fazer like nos teus post 😞

Link to comment
Share on other sites

Tás a perguntar como verificar outro nome além desse xxxx? Que tal adicionares outra verificação como tens nesse xxxx?

If Listview.SelectedItems(0).Text.StartsWith("outronome") Then
'....

Edit:

Já agora em cima não precisas de escrever isto:

RichTextBox1.Text = RichTextBox1.Text + Key
'basta isto
RichTextBox1.Text += Key
Edited by He B Te My
Link to comment
Share on other sites

Não faças isso, um gajo tá aqui a ajudar porque têm gosto, não por €.

Só recebo € se for em freelance, isto é apenas uma ajuda, não tou a fazer o projecto por ti.

Guarda isso.

Link to comment
Share on other sites

Não faças isso, um gajo tá aqui a ajudar porque têm gosto, não por €.

Só recebo € se for em freelance, isto é apenas uma ajuda, não tou a fazer o projecto por ti.

Guarda isso.

Sim eu sei amigo, eu também faço isso mas com outras áreas alem da programação...

Doação e so mesmo Doação não um pagamento por um serviço 😉

E esse espírito de entre ajuda que os nossos foruns precisão, mas a malta só quer e facebook actualmente 😞

Mais uma vez obrigado.

Link to comment
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
 Share

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