Rubrik: Dateisystem · Dateien lesen/schreiben | VB-Versionen: VB4, VB5, VB6 | 07.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 Otter | Bewertung: | Views: 23.369 |
www.tools4vb.de | System: 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)