• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

leticiaxc

[Resolvido] Modificar uma linha especifica de um txt

8 mensagens neste tópico

olá a todos!

sou nova por aqui e sou nova em vb.net.

criei coragem e resolvi fazer uma pegunta pois achei uma pegunta igual só que não haviam respostas...  :P

estou com uma dificuldade parecida que essa pessoa:

http://www.portugal-a-programar.pt/index.php?showtopic=21190

eu estou fazendo um programa que deve ler um txt, e se nesse txt conter uma determinada palavra, troca-la por outra palavra. Já tentei o replace e o if, mas não funciona... será que alguém sabe o que estou fazendo de errado?  :dontgetit:

meu codigo atual..

essa sub fica no evento click de um botão, só que eu clico no botão e não acontece nada, nem aparece erro nenhum...

    Private Sub TrocaString()


        plano = CreateObject("Scripting.FileSystemObject")
        relatorio = plano.OpenTextFile("C\teste.txt")

        If System.IO.File.Exists("C:\teste.txt") = True Then 'testa se o arquivo existe

            While relatorio.AtEndOfStream <> True
                fLinha = relatorio.Readline ' lê as linhas


                If fLinha = "exemplo" Then 
                    fLinha.Replace("exemplo", "legal") 'trocar por legal

                   Messagebox.show("Arquivo alterado!")
                End If

            End While

            
        Else
            MessageBox.Show("Arquivo não encontrado!") ' se o arquivo não for encontrado, messagebox

        End If


    End Sub

Grata desde já!  :biggrin:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

olá a todos!

sou nova por aqui e sou nova em vb.net.

criei coragem e resolvi fazer uma pegunta pois achei uma pegunta igual só que não haviam respostas...  :P

estou com uma dificuldade parecida que essa pessoa:

http://www.portugal-a-programar.pt/index.php?showtopic=21190

eu estou fazendo um programa que deve ler um txt, e se nesse txt conter uma determinada palavra, troca-la por outra palavra. Já tentei o replace e o if, mas não funciona... será que alguém sabe o que estou fazendo de errado?  :dontgetit:

meu codigo atual..

essa sub fica no evento click de um botão, só que eu clico no botão e não acontece nada, nem aparece erro nenhum...

    Private Sub TrocaString()


        plano = CreateObject("Scripting.FileSystemObject")
        relatorio = plano.OpenTextFile("C\teste.txt")

        If System.IO.File.Exists("C:\teste.txt") = True Then 'testa se o arquivo existe

            While relatorio.AtEndOfStream <> True
                fLinha = relatorio.Readline ' lê as linhas


                If fLinha = "exemplo" Then 
                    fLinha.Replace("exemplo", "legal") 'trocar por legal

                   Messagebox.show("Arquivo alterado!")
                End If

            End While

            
        Else
            MessageBox.Show("Arquivo não encontrado!") ' se o arquivo não for encontrado, messagebox

        End If


    End Sub

Grata desde já!  :biggrin:

O que tu queres e tipo abrir um ficheiro txt por exemplo no disco C:\letras.txt

abrilo no programa e depois mudificalo de salvar o texto modificado!?

!?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Olá,

Duas coisas sobre o código que mostraste:

1º Isto não faz nada!

fLinha.Replace("exemplo", "legal") 

Os seja, o resultado devolvido é que tem a alteração e para poderes utilizar esse valor tens de fazer algo:

Dim result As String = fLinha.Replace("exemplo", "legal") 

Neste momento a variável "result" tem a string com a alteração.

2º Para se alterar um ficheiro de texto tens de criar um novo StreamWriter e à medida que percorres o ficheiro original, colocas lá (no StreamWriter) o que queres no resultado final.

Podes ver alguns exemplos: VB.NET: Utilização de Ficheiros de Texto

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

obrigada pela respostas!!  :confused:

2º Para se alterar um ficheiro de texto tens de criar um novo StreamWriter e à medida que percorres o ficheiro original, colocas lá (no StreamWriter) o que queres no resultado final.

é possível botar o StreamWriter dentro do while? ou deveria usa-lo depois do "If System.IO.File.Exists("C:\teste.txt") = True Then .."

o ideal seria que o programa abrisse o txt, mas sem que o usuário pudesse visualiza-lo, alterasse a fLinha e salvasse o arquivo já alterado... será que isso é possível?  :hmm:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pelo bloco de notas nao consigo confirmar mas tenta:

Imports System.IO

Public Class Form1


    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Dim strPath = "C:\teste.txt"
        Dim fs As New FileStream(strPath, FileMode.Open)
        Dim sr As New StreamReader(fs)
        Dim strFile As String

        strFile = sr.ReadToEnd()
        sr.Close()

        Dim fstwo As New FileStream(strPath, FileMode.Create)

        strFile = strFile.Replace("flinha_por_exemplo", "novo texto")

        Dim sw As New StreamWriter(fstwo)

        sw.Write(strFile)

        sw.Flush()
        sw.Close()

    End Sub

End Class

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

funcionou perfeitamente!  :cheesygrin:

muito obrigada, eu já tinha feito de tudo e não conseguia arrumar isto!!!

valeu mesmo!!  :confused:

0

Partilhar esta mensagem


Link 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