vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: Dateisystem · Dateien lesen/schreiben   |   VB-Versionen: VB631.03.10
Bestimmten Zeichenbereich in einer Zeile aus einer Textdatei lesen

Mit dieser Funktion (ReadSpecCharInLine) können sie Zeichenbereiche aus einer Zeile innerhalb einer Textdatei auslesen.

Autor:   Dennis HemkenBewertung:  Views:  12.402 
gadgets.hemken.orgSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Eine Textdatei kann manchmal auch einzelne Werte enthalten. Ein Paradebeispiel ist das Logging.

In einem solchen Fall hat zum Beispiel jeder Werte eine bestimmte Länge. Wert 1 ist 15 Zeichen lang und beginnt ab Zeichen 4, Wert 2 ist 10 Zeichen lang und beginnt ab Zeichen sowieso, usw.
Eine solche Textdatei könnte zum Beispiel folgendermaßen aussehen:

Logging                   Value                      Status           NochnWert
LG-00-abc                 54872                      OK		      klausmaus
LG-09-HALLOabc            00100                      OK		      hansfranz
PQ-77-MoinServus          00000                      Failed	      nickklick

Wenn man nun einzelne Werte dieser Beispieldatei benötigt, ist es mit dieser Funktion besonders leicht. In dem Beispiel benötige ich jeweils den zweiten Wert (Value) aus der oben gezeigten Textdatei. Dieser Wert beginnt in jeder Zeile beim 26. Zeichen und ist nicht länger als 5 Zeichen.

Die Funktion:

Public Sub ReadSpecCharInLine(ByRef strCharacters() As String, _
  ByVal strFile As String, _
  ByVal lngCharPoint As Long, _
  ByVal lngLength As Long)
  Dim objFSO As Object
  Dim objFile As Object
  Dim lngCount As Long
 
  ' Fehlerbehandlung aktivieren
  On Error GoTo ErrHandler
 
  ' Laufparameter für das Redimensionieren des Arrays
  lngCount = 0
 
  ' Verweis auf das FileSystemObject erstellen
  Set objFSO = CreateObject("Scripting.FileSystemObject")
 
  ' Existiert die Datei überhaupt?
  If objFSO.FileExists(strFile) Then
    ' Datei zum Lesen öffnen
    Set objFile = objFSO.OpenTextFile(strFile, 1)
 
    Do Until objFile.AtEndOfStream
      ' Array redimensionieren
      ReDim Preserve strCharacters(lngCount)
      ' Anzahl-Zeichen von lngCharPoint überspringen
      objFile.Skip (lngCharPoint)
      ' Anzahl-Zeichen von lngLength lesen und in das Array speichern
      strCharacters(lngCount) = objFile.Read(lngLength)
      ' restliche Zeile überspringen
      objFile.SkipLine
      ' Erhöhung des Laufparameter
      lngCount = lngCount + 1
    Loop
    ' Datei schließen
    objFile.Close
  End If
 
ErrHandler:
  ' Objekte zerstören
  Set objFile = Nothing
  Set objFSO = Nothing
End Sub

Der Aufruf:
Das obige Beispiel als "C:\log.txt" abspeichern

Dim strCharacterArr() As String
Dim strFile As String
Dim lngCount As Long
 
strFile = "C:\log.txt"
Call ReadSpecCharInLine(strCharacterArr, strFile, 26, 5)
For lngCount = 0 To UBound(strCharacterArr)
  Debug.Print strCharacterArr(lngCount)
Next lngCount



Anzeige

Kauftipp Unser Dauerbrenner!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.
 
 
Copyright ©2000-2024 vb@rchiv Dieter OtterAlle Rechte vorbehalten.


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.