vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Erstellen von dynamischen Kontextmen?s - wann immer Sie sie brauchen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2020
 
zurück
Rubrik: Dateisystem · Dateien lesen/schreiben   |   VB-Versionen: VB4, VB5, VB607.10.04
Bestimmte Anzahl Zeichen einer Datei auslesen

Mit dieser universellen Funktion können Sie ab sofort eine bestimmte Anzahl Zeichen ab einer frei angebbarer Position innerhalb einer Datei auslesen - entweder vorwärts oder rückwärts.

Autor:   Dieter OtterBewertung:     [ Jetzt bewerten ]Views:  21.673 
www.tools4vb.deSystem:  Win9x, WinNT, Win2k, WinXP, Vista, Win7, Win8, Win10 Beispielprojekt auf CD 

Mit Hilfe nachfolgender Funktion können Sie ab sofort eine bestimmte Anzahl Zeichen ab einer frei festlegbaren Position innerhalb einer Datei auslesen.

' bestimmte Anzahl Bytes einer Datei auslesen
Public Function FileRead(ByVal sFile As String, _
  Optional ByVal nStartPos As Long = 1, _
  Optional ByVal nBytesToRead As Long = 0) As String
 
  Dim F As Integer
  Dim nFileLen As Long
  Dim sBuffer As String
 
  ' Datei im Binary-Mode öffnen
  F = FreeFile
  Open sFile For Binary As #F
 
  ' Dateigröße in Bytes
  nFileLen = LOF(F)
 
  ' Falls "BytesToRead" nicht angegeben oder 0,
  ' gesamten Inhalt ab "StartPos" auslesen
  If nBytesToRead = 0 Then nBytesToRead = nFileLen
 
  ' Falls StartPos < 1, Bytes rückwärts vom
  ' Dateiende auslesen
  If nStartPos < 1 Then
    nStartPos = nFileLen
    nBytesToRead = -Abs(nBytesToRead)
  End If
 
  ' Falls "StartPos" > Dateigröße und
  ' "BytesToRead" < 0, Funktion beenden
  If nStartPos > nFileLen And nBytesToRead < 0 Then
    Close #F
    Exit Function
  End If
 
  ' Leseposition ermitteln
  If nBytesToRead < 1 Then
    nBytesToRead = Abs(nBytesToRead)
    nStartPos = nStartPos - nBytesToRead + 1
    If nStartPos < 1 Then
      nBytesToRead = nBytesToRead - Abs(nStartPos) - 1
      nStartPos = 1
    End If
  End If
 
  If nStartPos + nBytesToRead - 1 > nFileLen Then
    nBytesToRead = nFileLen - nStartPos + 1
  End If
 
  ' Inhalt auslesen
  sBuffer = Space$(nBytesToRead)
  Seek #F, nStartPos
  Get #F, , sBuffer
 
  ' Datei schließen
  Close #F
 
  FileRead = sBuffer
End Function

Ein paar Anwendungsbeispiele:

1. Gesamten Inhalt einer Datei auslesen

sBuffer = FileRead("d:\test.txt")

2. Nur die ersten 10 Bytes auslesen

sBuffer = FileRead("d:\test.txt", 1, 10)

3. 10 Bytes ab Position 120 auslesen

sBuffer = FileRead("d:\test.txt", 120, 10)

4. 15 Bytes ab Position 500 rückwärts auslesen (entspricht Bytes 486 bis 500)

sBuffer = FileRead("d:\test.txt", 500, -15)

5. Die letzen 20 Bytes einer Datei auslesen

sBuffer = FileRead("d:\test.txt", 0, 20)

Dieser Tipp wurde bereits 21.673 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-2020 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