vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Zippen wie die Profis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
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:     [ Jetzt bewerten ]Views:  12.440 
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

Dieser Tipp wurde bereits 12.440 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


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.
 
   

Druckansicht Druckansicht Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle 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.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel