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 19.214 mal aufgerufen.
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
sevGraph (VB/VBA) ![]() Grafische Auswertungen Präsentieren Sie Ihre Daten mit wenig Aufwand in grafischer Form. sevGraph unterstützt hierbei Balken-, Linien- und Stapel-Diagramme (Stacked Bars), sowie 2D- und 3D-Tortendiagramme und arbeitet vollständig datenbankunabhängig! Tipp des Monats Dietrich Herrmann Einsatz einer DimmingForm Es wird eine Form vorgestellt, mit deren Hilfe man den gesamten Bildschirm auf verschiedene Arten mit transparenter Farbe überdecken und nur eine eigene Form im Vordergrund zeigen kann. Neu! sevISDN 1.0 ![]() Überwachung aller eingehender Anrufe! Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. |
||||||||||||||||
|
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


