Condividi:        

VB net Eliminare ultima riga file txt

Problemi di HTML? Di PHP, ASP, .NET, JSP, Perl, SQL, JavaScript, Visual Basic..?
Vuoi realizzare programmi in C, C++, Java, Ruby o Smalltalk, e non sai da che parte cominciare?
Entra qui e troverai le risposte!

Moderatori: Anthony47, Triumph Of Steel, archimede

VB net Eliminare ultima riga file txt

Postdi Francesco53 » 18/07/14 22:05

Un saluto a tutto il Forum, ho la seguente difficoltà:
In un file di testo, l'ultima riga contiene una scritta e alcuni caratteri speciali (esempio æ), utilizzo il seguente codice:
Codice: Seleziona tutto
Sub CancellaUltima()
        Dim lineaRicerca As String = "la storia ai giorni nostri  æ dal passato al presente "
        Dim lineaSostituzione As String = ""
        Dim linee As String() = IO.File.ReadAllLines(percorso & "\storia.txt")
        For i As Integer = 0 To linee.Count - 1
            If linee(i) = lineaRicerca Then linee(i) = lineaSostituzione
        Next
        IO.File.WriteAllLines(percorso & "\storia.txt", linee)
        MsgBox("Aggiornamento terminato")
    End Sub

Purtroppo non riconosce la stringa e non mi elimina l'ultima riga contenente la stringa.
Chiedo cortesemente aiuto per riuscire a superare quanto esposto, o altra forma per eliminare l'ultima riga del file.
Grazie
Francesco
S.O. Windows 10 e Office 2007
Avatar utente
Francesco53
Utente Senior
 
Post: 811
Iscritto il: 20/02/10 18:45

Sponsor
 

Postdi Francesco53 » 20/07/14 10:43

Buongiorno a tutti, se può semplificare la richiesta, avrei la necessità, contate le righe di un file di testo,
avere la possibilità di cancellare l'ultima o le ultime due righe.
Ringrazio chiunque possa darmi le giuste indicazioni.
Francesco
S.O. Windows 10 e Office 2007
Avatar utente
Francesco53
Utente Senior
 
Post: 811
Iscritto il: 20/02/10 18:45

Postdi davide72 » 20/07/14 11:10

non m' intendo molto di queste applicazioni, ma da quello che si legge in rete sembra che non esiste un metodo per cancellare la riga
in un file di testo, ma dovresti riscriverla senza la riga che non ti interessa
davide72
Utente Senior
 
Post: 6494
Iscritto il: 10/06/14 22:01

Postdi Francesco53 » 20/07/14 22:34

Grazie per la risposta davide, riesco a togliere tantissime righe, purtroppo non l'ultima,
infatti chiedevo delle indicazioni per riuscire ad eliminare le righe utilizzando eventualmente
anche un ciclo se non possibile in altro modo.
francesco
S.O. Windows 10 e Office 2007
Avatar utente
Francesco53
Utente Senior
 
Post: 811
Iscritto il: 20/02/10 18:45

Postdi hydra » 21/07/14 09:51

Secondo me devi andare a vedere col debug cosa leggi, in particolare come viene popolato l'array. Può essere che quando tu scrivi il file di testo vada a mettere un CrLf alla fine, che fa in modo di crearti una riga vuota; in questo caso andresti a sostituire la l'ultima riga vuota con una riga vuota, cioè lasci il file invariato. In ogni caso sostituire il testo di una riga vuota non vuol dire eliminare la riga, dovresti leggere il file, splittarlo in righe e poi riscrivere il file saltando le righe che non vuoi scrivere.
Avatar utente
hydra
Moderatore
 
Post: 7007
Iscritto il: 19/07/04 08:06
Località: Vallis Duplavis

Postdi Francesco53 » 21/07/14 15:52

Buongiorno hydra,
ho risolto così:
Codice: Seleziona tutto
    Sub CancellaUltima()
            Dim lineaSostituzione As String = ""
            Dim linee As String() = IO.File.ReadAllLines(percorso & "\storia.txt")
            For i As Integer = 0 To linee.Count - 1
                   If i = linee.Count - 2 Then linee(i) = ""
            Next
            IO.File.WriteAllLines(percorso & "\storia.txt", linee)
            MsgBox("Aggiornamento terminato")
        End Sub

solo che mi inserisce un vbCrLf che vorrei evitare, sai dirmi come fare?
Grazie
Francesco
S.O. Windows 10 e Office 2007
Avatar utente
Francesco53
Utente Senior
 
Post: 811
Iscritto il: 20/02/10 18:45

Re: VB net Eliminare ultima riga file txt

Postdi hydra » 23/07/14 07:14

Se tu elimini la riga i-2, presumo che fosse corretta l'ipotesi che l'ultima riga contiene solo un crlf. In questo caso io userei un secondo array di stringhe, quindi nel ciclo vai a copiare l'iesima riga nel nuovo array, facendo la sostituzione della riga che devi eliminare dopo che l'hai copiata ed evitando di copiare l'ultima. Quindi scrivi il 2° array nel file. Sempre ammesso che il metodo WriteAllLines non inserisca automaticamente un crlf alla fine. Una roba tipo

Codice: Seleziona tutto
Dim lineaSostituzione As String = ""
            Dim linee As String() = IO.File.ReadAllLines(percorso & "\storia.txt")
            Dim lineeCopiate As String() = New String(linee.count - 1)
            For i As Integer = 0 To linee.Count - 1
                   If i <> linee.Count - 1 Then lineeCopiate(i) = linee(i)
                   If i = linee.Count - 2 Then lineeCopiate(i) = ""
            Next
            IO.File.WriteAllLines(percorso & "\storia.txt", lineeCopiate)
            MsgBox("Aggiornamento terminato")


Tieni conto che il vbnet non lo mastico da un po' quindi la sintassi potrebbe non essere del tutto corretta.
Avatar utente
hydra
Moderatore
 
Post: 7007
Iscritto il: 19/07/04 08:06
Località: Vallis Duplavis

Re: VB net Eliminare ultima riga file txt

Postdi Francesco53 » 23/07/14 08:03

Buongiorno hydra,
avevo l'intenzione di caricare un array e utilizzare quello per lavorarci sopra,
quindi il tuo consiglio mi conferma la via da utilizzare.
Grazie
francesco
S.O. Windows 10 e Office 2007
Avatar utente
Francesco53
Utente Senior
 
Post: 811
Iscritto il: 20/02/10 18:45


Torna a Programmazione


Topic correlati a "VB net Eliminare ultima riga file txt":


Chi c’è in linea

Visitano il forum: Nessuno e 7 ospiti