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

https://www.vbarchiv.net
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:  Views:  23.369 
www.tools4vb.deSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 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)



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.