Condividi:
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, archimede, Triumph Of Steel
di 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
-

Francesco53
- Utente Senior
-
- Post: 794
- Iscritto il: 20/02/10 18:45
di 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
-

Francesco53
- Utente Senior
-
- Post: 794
- Iscritto il: 20/02/10 18:45
di 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
di 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
-

Francesco53
- Utente Senior
-
- Post: 794
- Iscritto il: 20/02/10 18:45
di 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.
-

hydra
- Moderatore
-
- Post: 7007
- Iscritto il: 19/07/04 08:06
- Località: Vallis Duplavis
di 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
-

Francesco53
- Utente Senior
-
- Post: 794
- Iscritto il: 20/02/10 18:45
di 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.
-

hydra
- Moderatore
-
- Post: 7007
- Iscritto il: 19/07/04 08:06
- Località: Vallis Duplavis
di 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
-

Francesco53
- Utente Senior
-
- Post: 794
- 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 2 ospiti