27/05/10 21:23
Mr SaJaN
Salve a tutti, sto provando a fare un programma che sostituisca su un file di testo una serie di caratteri, ma quando vado a riscrivere il file mi viene scritta una riga si e una riga no.. apparentemente non trovo l'errore..
sono passato da poco a vb2008 (usavo vb6 ma mi ero un pò allontanato dalla programmazione) e ora per prendere dimestichezza con il vb volevo cominciare con cose semplici, ma qui di semplice mi sa che c'è ben poco
ecco il mio codice:
dato che il testo da sostituire può cambiare da pc a pc, io identifico la riga che mi interessa con "<key>Library Persistent ID</key>", identificata la riga, gli dico di partire da 42° carattere e contarne 16, in modo da restituirmi ciò che mi interessa.. poi questa stringa andrebbe rimpiazzata con un'altra, alla quale io ho momentaneamente dato il valore "boh", se la riga non è quella interessata, la legge e la riscrive senza apportare nessuna modifica.. io sto facendo le prove con questo file di testo:
Qualcuno sa spiegarmi cosa c'è di sbagliato nel mio codice e perchè scrive una riga si e una no??
Grazie mille
sono passato da poco a vb2008 (usavo vb6 ma mi ero un pò allontanato dalla programmazione) e ora per prendere dimestichezza con il vb volevo cominciare con cose semplici, ma qui di semplice mi sa che c'è ben poco
ecco il mio codice:
Private Sub btnModifica_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnModifica.Click Dim tempFileName As String = System.IO.Path.GetTempFileName() Dim NomeFile As String = "C:\file.txt" Using FileRead As New System.IO.StreamReader(NomeFile) Using FileWrite As New System.IO.StreamWriter(tempFileName, False) 'stringa per identificare la riga Dim str2 As String = "<key>Library Persistent ID</key>" Dim STRINGALETTA As String Do STRINGALETTA = FileRead.ReadLine() 'la riga letta è quella interessata? If InStr(STRINGALETTA, str2) = 2 Then 'prendo il pezzo che mi serve Dim StringaFinale As String = Mid$(STRINGALETTA, 42, 16) 'scrivo la nuova riga FileWrite.WriteLine(STRINGALETTA.Replace(StringaFinale, "boh")) Else 'altrimenti lascio così come è tuttora FileWrite.WriteLine(FileRead.ReadLine()) End If Loop Until STRINGALETTA Is Nothing End Using End Using 'creo una copia di backup che non si sa mai :D Dim nomeFileBackup As String = NomeFile Dim k As Integer = NomeFile.LastIndexOf(".") If k > 0 Then nomeFileBackup = NomeFile.Substring(0, k) End If nomeFileBackup += ".bak" If IO.File.Exists(nomeFileBackup) Then IO.File.Delete(nomeFileBackup) End If IO.File.Move(NomeFile, nomeFileBackup) IO.File.Delete(NomeFile) IO.File.Move(tempFileName, NomeFile) End Sub
dato che il testo da sostituire può cambiare da pc a pc, io identifico la riga che mi interessa con "<key>Library Persistent ID</key>", identificata la riga, gli dico di partire da 42° carattere e contarne 16, in modo da restituirmi ciò che mi interessa.. poi questa stringa andrebbe rimpiazzata con un'altra, alla quale io ho momentaneamente dato il valore "boh", se la riga non è quella interessata, la legge e la riscrive senza apportare nessuna modifica.. io sto facendo le prove con questo file di testo:
<key>Application Name</key><string>Valore1</string> <key>Application Version</key><string>Valore2</string> <key>Library Persistent ID</key><string>13C4B189A8A62F67</string> <key>Traccia</key> <key>1248</key>
Qualcuno sa spiegarmi cosa c'è di sbagliato nel mio codice e perchè scrive una riga si e una no??
Grazie mille
aaa