01. marts 2002 - 10:30Der er
7 kommentarer og 1 løsning
Slet bestemt linje i text fil plus alt med #
Jeg er løbet ind i et lille problem.
Jeg har en text fil som jeg geren vil have slettet en bestemt linje i og mangler derfor hjælp til at lave en funktion som jeg bare kan give et linje nr og så sletter den den linje i text filen. Ville så vidt muligt gerne ungå at man ligger det hele op i et array hvis det er muligt.
Listen der skal slettes en linje fra er en Winamp Playlist. Så det ville også vere smart hvis man kunne lave funktionen så den slettede alle linjer der starter med # da de ikke lige skal bruges til noget.
'Her er en sub, som kan benyttes til at slette én bestemt linie: '---------------------------------------
Sub DeleteLine(lngLine As Long, strFilePath As String) Dim _ FSO As New Scripting.FileSystemObject, _ vFile As TextStream, _ strText As String, _ L As Long, _ I As Long, _ blnGetLine As Boolean
'Check om filen eksisterer: If Not FSO.FileExists(strFilePath) Then MsgBox "Filen eksisterer ikke!" Exit Sub End If
Set vFile = FSO.OpenTextFile(strFilePath)
'Hent alle linier, undtagen lngLine: Do Until vFile.AtEndOfStream If vFile.Line <> lngLine Then strText = strText & vFile.ReadLine & vbCrLf Else vFile.SkipLine End If Loop
'Luk filen: vFile.Close
'Overskriv den gamle fil med 'den nye, rettede version: Set vFile = FSO.CreateTextFile(strFilePath, True)
'Skriv til den nye fil: vFile.Write strText
'Luk filen: vFile.Close End Sub
'Denne sub kan fx. kaldes på følgende måde:
Private Sub Command1_Click() 'Slet linie nr. 11 i filen C:\list.m3u: DeleteLine 11, "C:\list.m3u" End Sub
'Her til sidst har jeg lavet en sub, som gør begge dele på én gang, denne kalder jeg DoDelete: '----------------------------------------
Sub DoDelete(lngLine As Long, strFilePath As String) Dim _ FSO As New Scripting.FileSystemObject, _ vFile As TextStream, _ strText As String, _ strLine As String, _ L As Long, _ I As Long
'Check om filen eksisterer: If Not FSO.FileExists(strFilePath) Then MsgBox "Filen eksisterer ikke!" Exit Sub End If
Set vFile = FSO.OpenTextFile(strFilePath)
'Hent linier fra tekstfilen: Do Until vFile.AtEndOfStream
'Hvis den aktuelle linie 'er den, som skal fjernes, 'skal den springes over: If vFile.Line <> lngLine Then strLine = vFile.ReadLine
'Hvis den istedet starter med # 'skal den også springes over: If Left(strLine, 1) <> "#" Then strText = strText & strLine & vbCrLf End If Else vFile.SkipLine End If Loop
'Luk filen: vFile.Close
'Overskriv den gamle fil med 'den nye, rettede version: Set vFile = FSO.CreateTextFile(strFilePath, True)
'Skriv til den nye fil: vFile.Write strText
'Luk filen: vFile.Close End Sub
'Denne sub kan fx kaldes på flg. måde:
Private Sub Command1_Click() 'Slet linie 3 og alle linier, der starter med # DoDelete 3, "C:\list.m3u" End Sub
Bortset fra at den lige skulle fjerne linjerne med # før den sletter den bestemte linje så man fjerner den linje sangen står i og ikke resikere at det kun er en kommentar den fjerner. Men det er nu det mindste problem for mig at rette.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.