Mit unserem Tipp Hierfür gibt es verschiedene Möglichkeiten 1. Datei zeilenweise lesen und temporär zwischenspeichern ' Bestimmte Zeile aus einer Textdatei löschen Public Sub txt_DeleteLine( _ ByVal sFilename As String, _ ByVal lLineToDelete As Long) Dim F As Integer Dim N As Integer Dim sFileTemp As String Dim lCount As Long Dim sLine As String Dim bResult As Boolean ' temporäre Datei zum Zwischenspeichern sFileTemp = sFilename & "~" ' Textdatei zum Lesen öffnen F = FreeFile Open sFilename For Input As #F ' temporäre Datei zum Schreiben öffnen N = FreeFile Open sFileTemp For Output As #N ' Textdatei zeilenweise einlesen und schreiben While Not EOF(F) lCount = lCount + 1 Line Input #F, sLine If lCount <> lLineToDelete Then Print #N, sLine Wend ' Dateien schliessen Close #F: Close #N ' Textdatei löschen Kill sFilename ' temporäre Datei in Textdatei umbenennen Name sFileTemp As sFilename End Sub Das funktioniert soweit ganz gut. 2. Datei komplett einlesen, in ein Array umwandeln und gezielt das gewünschte Array-Element löschen Zunächst lesen wir den Inhalt der Textdatei in einem Rutsch aus und speichern den Inhalt in einer String-Variable: Dim F As Integer Dim sInhalt As String F = FreeFile Open sFilename For Binary As #F sInhalt = Space$(Lof(F)) Get #F, , sInhalt Close #F Da es sich um eine textbasierte Datei handelt, sind die einzelnen Zeilen durch ein vbCrLf voneinander getrennt. Über die Split-Funktion machen wir aus dem String ein String-Array. Dim sLines() As String sLines = Split(sInhalt, vbCrLf) sInhalt = "" Nun löschen wir die gewünschte Zeile aus dem Array: Dim I As Long Dim lCount As Long lCount = UBound(sLines) - 1 For I = lLineToDelete - 1 To lCount - 1 sLines(I) = sLines(I + 1) Next I ReDim Preserve sLines(lCount - 1) Anschliessend machen wir aus dem String-Array wieder einen normalen String und speichern diesen zurück in die Datei: F = FreeFile Open sFilename For Output As #F Print #F, Join(sLines, vbCrLf); Close #F Und hier die vollständig dokumentierte Prozedur txt_DeleteLine: ' Bestimmte Zeile aus einer Textdatei löschen Public Sub txt_DeleteLine( _ ByVal sFilename As String, _ ByVal lLineToDelete As Long) Dim F As Integer Dim I As Long Dim lCount As Long Dim sInhalt As String Dim sLines() As String ' Textdatei in einem Rutsch einlesen F = FreeFile Open sFilename For Binary As #F sInhalt = Space$(LOF(F)) Get #F, , sInhalt Close #F ' Inhalt in ein String-Array umwandeln sLines = Split(sInhalt, vbCrLf) sInhalt = "" ' gewünschtes Element (Zeile) aus dem Array entfernen lCount = UBound(sLines) - 1 For I = lLineToDelete - 1 To lCount - 1 sLines(I) = sLines(I + 1) Next I ReDim Preserve sLines(lCount - 1) ' Inhalt speichern F = FreeFile Open sFilename For Output As #F Print #F, Join(sLines, vbCrLf); Close #F End Sub Dieser Tipp wurde bereits 13.081 mal aufgerufen.
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv (einschl. Beispielprojekt!) Ein absolutes Muss - Mehr als 650 MByte geballtes Wissen! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - Online-Update-Funktion u.v.m. |
sevAniGif (VB/VBA) ![]() Anzeigen von animierten GIF-Dateien Ab sofort lassen sich auch unter VB6 und VBA (Access ab Version 2000) animierte GIF-Grafiken anzeigen und abspielen, die entweder lokal auf dem System oder auf einem Webserver gespeichert sind. Buchempfehlung Tipp des Monats Dieter Otter Snapshot einer Webseite erstellen Mit dieser Funktion lässt sich ein Snapshot einer Webseite erstellen, die aktuell im WebBrowser-Control angezeigt wird. Access-Tools Vol.1 ![]() Über 400 MByte Inhalt Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB |
||||||||||||||||
|
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |
|||||||||||||||||


Zeile aus einer Textdatei löschen



