Ir para o conteúdo
a3deluxe

ReadLines em ficheiro TXT

Mensagens Recomendadas

a3deluxe

Boas,

Precisava de uma ajudinha,

Queria ler a primeira linha do ficheiro TXT e depois a 3 palavra (725540N) e a 5 palavra (470055N)

No codigo seguinte já esta a ler a linha 1, só falta ler as palavras.

Ficheiro TXT:

0N 728340N [b]725540N[/b] 470823N [b]470055N[/b] 2465291N 2218062N 2461770N 2216563N
735472547  2216563N2216563N
OFF 87340578t8hr  2216563N

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
       Dim FILE_NAME As String = "c:\teste.txt"

       Dim TextLine As String

       If System.IO.File.Exists(FILE_NAME) = True Then

           Dim objReader As New System.IO.StreamReader(FILE_NAME)

           Do While objReader.Peek() <> -1

               TextLine = TextLine & objReader.ReadLine() & vbNewLine

           Loop

           TextBox1.Text = TextLine
           TextBox2.Text = TextLine

       Else

           MsgBox("File Does Not Exist")

       End If
   End Sub

Editado por thoga31
Formatação do tópico + GeSHi

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
nelsonr

Boas,

podes partir a string lida pelo caracter do espaço. Algo assim (não testado):

Dim palavras As String() = TextLine.Split(" ")

Depois deves conseguir aceder à terceira e quinta palavra acedendo ao array palavras.

Convem é certificares-te que o array tem mais de 5 palavras antes de acederes.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
nelsonr

Não conseguiste porque... ?

Aqui está um exemplo:

	Dim FILE_NAME As String = "c:\teste.txt"
	Dim TextLine As String = ""

	If System.IO.File.Exists(FILE_NAME) = True Then

		TextLine = System.IO.File.ReadAllText(FILE_NAME)

		Dim palavras As String() = TextLine.Split(" ")

		If palavras.Length > 4 Then
			TextBox1.Text = palavras(2)
			TextBox2.Text = palavras(4)
		End If
	Else
		MsgBox("File Does Not Exist")
	End If

Editado por nelsonr

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
thoga31

Só um pequeno aparte, que a solução está bem encaminhada e pouco mais há a acrescentar.

Porque é que tanta gente insiste em fazer a verificação de um Boolean numa estrutura If? O "= True" é completamente desnecessário e redundante, apenas enche a vista e o processador de coisas desnecessárias. ;)

' Redundante:
If System.IO.File.Exists(FILE_NAME) = True Then

' Mais correcto...
If System.IO.File.Exists(FILE_NAME) Then
If Not System.IO.File.Exists(FILE_NAME) Then

Editado por thoga31

Knowledge is free! | Occasional Fortnite player

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
nelsonr

Eu não uso, apenas utilizei o exemplo do OP.

No entanto há que prefira muitas vezes soluções redundantes para facilitar a interpretação. Principalmente para quem não está habituado à linguagem.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
a3deluxe

Boas,

Tentei assim e não apareceu nada nas TextBoxs, tambem não tem erros,

//
Dim FILE_NAME As String = "c:\teste.txt"
        Dim TextLine As String = ""
        Dim palavras As String() = TextLine.Split(" ")
        Dim objReader As New System.IO.StreamReader(FILE_NAME)

        If System.IO.File.Exists(FILE_NAME) Then
            If Not System.IO.File.Exists(FILE_NAME) Then

                TextLine = System.IO.File.ReadAllText(FILE_NAME)


                Do While objReader.Peek() <> -1

                    TextLine = TextLine & objReader.ReadLine() & vbNewLine

                Loop

                If palavras.Length > 10 Then

                    TextBox1.Text = palavras(7)
                    TextBox2.Text = palavras(9)

                End If
            Else

                MsgBox("File Does Not Exist")

            End If
        End If
   End Sub

Editado por ribeiro55

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
nelsonr

Boas,

grandes trocas que andaste a fazer.

então estás a dividir a TextLine logo apos a definição, que está vazia.

Dim TextLine As String = ""
Dim palavras As String() = TextLine.Split(" ")

Estás a verificar se o ficheiro existe e se existir, estás a verificar se não existe?

If System.IO.File.Exists(FILE_NAME) Then
		    If Not System.IO.File.Exists(FILE_NAME) Then

Estás a ler o ficheiro duas vezes. O ReadAllText já lê o conteúdo todo do ficheiro para a variavel, não precisas do restante

TextLine = System.IO.File.ReadAllText(FILE_NAME)

Do While objReader.Peek() <> -1
  TextLine = TextLine & objReader.ReadLine() & vbNewLine
Loop

Experimentaste o código que coloquei lá em cima?

Não precisavas de alterar nada

Editado por nelsonr

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
a3deluxe

Mais uma vez obrigado

nelsonr

Já funcionou.

Agora so tenho que acertar as palavras.

// If palavras.Length > 10 Then

isto corresponde ao tamanho das palavras?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
nelsonr
Agora so tenho que acertar as palavras.

// If palavras.Length > 10 Then

isto corresponde ao tamanho das palavras?

Corresponde ao tamanho do array palavras (quantos elementos tem), que por sua vez será o número de palavras que está no ficheiro

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
a3deluxe

ao fazer a leitura do ficheiro txt

esta palavra (725540N) tem um N junto dos numeros,

há como ler so os numeros, e não aparecer o N??

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
nelsonr

Se for sempre N, podes remover usando por exemplo:

TextBox1.Text = palavras(7).Replace("N","")

Editado por nelsonr

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
a3deluxe

mais uma situação resolvida, Obrigado

ja agora como posso abrir um ficheiro sem exteçao, em vez do TXT,

é um ficheiro que abro com o Notpad

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
a3deluxe

sim na aplicação.

já fiz isso e nao funcionou.

não coloquei a extensao.

depois testei com o ficheiro .txt e já funcionou.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
a3deluxe

esta a dar erro aqui

       If System.IO.File.Exists(FILE_NAME) = True Then

mas ja veriquei e o ficheiro existe

Editado por thoga31
Correcção da linguagem (GeSHi)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
a3deluxe

Testei com o primeiro codigo que postei aqui no topico e funcionou.

  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
       Dim FILE_NAME As String = "d:\Teste\Teste"

       Dim TextLine As String

       If System.IO.File.Exists(FILE_NAME) = True Then

           Dim objReader As New System.IO.StreamReader(FILE_NAME)

           Do While objReader.Peek() <> -1

               TextLine = TextLine & objReader.ReadLine() & vbNewLine

           Loop

           TextBox1.Text = TextLine
           TextBox2.Text = TextLine

       Else

           MsgBox("File Does Not Exist")

       End If
   End Sub

Com este codigo ele funciona, não precisa da extensao.

Editado por thoga31
Correcção da linguagem (GeSHi)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
nelsonr

Alguma coisa está mal na tua explicação

Então...

esta a dar erro aqui

//
	If System.IO.File.Exists(FILE_NAME) = True Then

E no exemplo que dizes que funciona, tens exactamente a mesma linha e não dá erro?

Testei agora mesmo o exemplo que tinha dado e não há problema nenhum em ler o ficheiro sem extensão

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
a3deluxe

Sim não da erro.

com o primeiro código que postei aqui, ele le o ficheiro sem extensao.

com o código que me ajudaste não da. só se colocar a extensao TXT.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
nelsonr

Como disse num post anterior

Faz debug e vê onde está o problema. Verifica se o File.Exists está a verificar o ficheiro correctamente

Executa passo a passo e verifica onde está o problema

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
a3deluxe

Já fiz debug passo a passo e nada.

nenhum erro.

com este código funciona, a parte de reconhecer o ficheiro sem extensao.

não dá para adiconar a este códio a parte da leitura das palavras?

// Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim FILE_NAME As String = "c:\teste"

    Dim TextLine As String

    If System.IO.File.Exists(FILE_NAME) = True Then

	    Dim objReader As New System.IO.StreamReader(FILE_NAME)

	    Do While objReader.Peek() <> -1

		    TextLine = TextLine & objReader.ReadLine() & vbNewLine

	    Loop

	    TextBox1.Text = TextLine
	    TextBox2.Text = TextLine

    Else

	    MsgBox("File Does Not Exist")

    End If
   End Sub 

Editado por a3deluxe

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.