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.698 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. |
sevZIP40 Pro DLL Zippen und Unzippen wie die Profis! Mit nur wenigen Zeilen Code statten Sie Ihre Anwendungen ab sofort mit schnellen Zip- und Unzip-Funktionen aus. Hierbei lassen sich entweder einzelnen Dateien oder auch gesamte Ordner zippen bzw. entpacken. Tipp des Monats April 2024 Skyfloy Chart von Microsoft und dazu noch gratis Tutorial für Microsoft Chart Controls für Microsoft .NET Framework 3.5 TOP Entwickler-Paket TOP-Preis!! Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR... |
||||||||||||||||
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. |