Hatten Sie auch schon einmal das Problem, dass Sie eine Textdatei nicht von vorne bis zum Ende, sondern genau umgekehrt auslesen mussten? Solange es sich um "kleinere" Dateien handelt, kann man die einzelnen Zeilen der Datei in ein String-Array auslesen und dieses dann rückwärts bearbeiten. Wenn es sich dagegen um sehr große Dateien handelt (mehrere Mega-Bytes) ist diese Vorgehensweise nicht sehr performant, da man ja zunächst den gesamten Inhalt auslesen muss. Nachfolgend stellen wir Ihnen einen Code vor, mit dem sich eine Textdatei beliebiger Größe rückwärts einlesen lässt, ohne dass hier der Arbeitsspeicher aufgrund der großen Dateigröße an seine Grenzen stösst. Wir öffnen die Textdatei hierbei im Binary-Mode, navigieren via Seek-Methode an das Ende der Datei und lesen diese dann rückwärts in kleine Blöcke aus. Dim sFile As String Dim F As Integer Dim nFilePos As Long Dim nBytes As Long Dim nSize As Long Dim sBuffer As String Dim sBufferOld As String Dim nPos As Long Dim sLine As String ' Blockgröße Const nBlockSize = 16384 sFile = "D:\MeineDatei.txt" ' Datei im Binary-Mode öffnen F = FreeFile Open sFile For Binary As #F ' Größe der Datei nSize = LOF(F) nFilePos = nSize nCount = 0 ' Solange einlesen, bis wir am Anfang der Datei angelangt sind Do While nFilePos > 1 ' Blockgröße bestimmen, die eingelesen werden soll nBytes = nBlockSize If nFilePos - nBytes < 1 Then nBytes = nFilePos nFilePos = nFilePos - nBytes + 1 ' Inhalt lesen sBuffer = Space$(nBytes) Seek #F, nFilePos Get #F, , sBuffer sBuffer = sBuffer & sBufferOld nPos = 0 Do ' nach Zeilenumbruch-Zeichen suchen nPos = InStrRev(sBuffer, vbCrLf) If nPos > 0 Then ' Zeile aus Block extrahieren sLine = Mid$(sBuffer, nPos + 2) sBuffer = Left$(sBuffer, nPos - 1) ' Zeileninhalt testweise in einer ListBox ausgeben List1.AddItem sLine End If Loop Until nPos = 0 If nPos > 0 Then sBufferOld = sBuffer Else sBufferOld = Mid$(sBuffer, nPos + 2) ' den Rest des Puffers ohne das erste Zeichen lesen End If Loop Close #F Dieser Tipp wurde bereits 13.768 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 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. |
sevWizard für VB5/6 Professionelle Assistenten im Handumdrehen Erstellen Sie eigene Assistenten (Wizards) im Look & Feel von Windows 2000/XP - mit allem Komfort und zwar in Windeseile :-) Tipp des Monats Juni 2024 Microsys Kramer Mausrad im Formular abschalten (Access) Deaktiviert das Mausrad in Access-Formularen. 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. |