Vor kurzem haben wir Ihnen gezeigt, wie man sehr schnell die letzte bzw. x-letzte Zeile aus einer Textdatei auslesen kann. Heute stellen wir Ihnen eine Funktion vor, mit der man eine beliebige Zeile aus einer Textdatei auslesen kann. Die Funktion ReadLine eignet sich allerdings nicht für sehr große Dateien, da zunächst der gesamte Dateiinhalt in ein String-Array eingelesen wird. Das Auslesen der Datei erfolgt in unserem Beispiel über das "FileSysteObjekt". Durch Aufruf der "ReadAll"-Methode wird der gesamte Inhalt eingelesen. Die Split-Anweisung zerlegt den Inhalt dann in einzelne Zeilen und speichert diese in einem String-Array. Um nun auch die Möglichkeit zu bieten, nicht nur die n-te Zeile, sondern auch die n-letzte Zeile auslesen zu können, gibt man einfach für nLine eine negative Zahl an (-1 für die letzte Zeile, -2 für die vorletzte und so weiter). Mit der Sgn-Funktion wird getestet, ob die Zahl negativ oder positiv ist und dann wird die entsprechende Zeile zurückgegeben. Im Falle eines Fehlers (wenn bsp. eine ungültige Zeilennummer angegeben wurde), wird immer ein Leerstring zurückgegeben. ' Bestimmte Zeile aus einer Textdatei lesen Public Function ReadLine(ByVal sFile As String, _ Optional ByVal nLine As Long = 1) As String Dim sLines() As String Dim oFSO As Object Dim oFile As Object ' Fehlerbehandlung aktivieren On Error GoTo ErrHandler ' Verweis auf das FileSystemObject erstellen Set oFSO = CreateObject("Scripting.FileSystemObject") ' Existiert die Datei überhaupt? If oFSO.FileExists(sFile) Then ' Datei öffnen Set oFile = oFSO.OpenTextFile(sFile) ' Alles lesen und in Array zerlegen sLines = Split(oFile.ReadAll, vbCrLf) ' Datei schließen oFile.Close Select Case Sgn(nLine) ' (nLine > 0) Case 1 ' n-te Zeile von vorne beginnend ReadLine = sLines(nLine - 1) ' (nLine < 0) Case -1 ' n-te Zeile von hinten beginnend ReadLine = sLines(UBound(sLines) + nLine + 1) End Select End If ErrHandler: ' Objekte zerstören Set oFile = Nothing Set oFSO = Nothing End Function Beispiel für den Einsatz von "ReadLine": ' 8-te Zeile einer Datei lesen txtLine.Text = ReadLine("C:\Musterdatei.txt", 8) ' vorletzte Datei lesen txtLine = ReadLine("C:\Musterdatei.txt", -2) Ich denke, der Code ist recht einfach zu verstehen, wenn man schon einmal mit dem "FileSystemObject" gearbeitet hat. Dieser Tipp wurde bereits 101.551 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 (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. |
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. Tipp des Monats März 2024 Dieter Otter UTF-8 Konvertierung von Dateien und Strings VB6 selbst verfügt über keine Funktionen zur UTF-8 Konvertierung von Daten. Mit Hilfe des ADODB.Stream-Objekts lassen sich diese fehlenden Funktionen aber schnell nachrüsten. 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! |
||||||||||||||||
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. |