VB.NET Blockweise lesen


Peter Parker

Mitglied
Hallo,

ich versuche aus einer txt Datei Daten Blockweise einzulesen.
Das funktioniert auch mit dem Code:

Code:
ImportsSystem
Imports System.IO
Imports System.Text

Module Module1
    Sub Main()
        Dim path As String
        Dim tmp(1000) As Char
        Dim sr As StreamReader
        Dim count As Integer

        path ="T:\datei.txt"

        sr = New StreamReader(path)
        count = 0

        Try

            Do While sr.Peek() >= 0
                count = sr.ReadBlock(tmp, 0, 48)
                Debug.Print("count= " & count)

                Console.WriteLine(tmp)
            Loop
            sr.Close()

        Catch ex As Exception

        End Try

        Console.WriteLine("Eingabe: ")
        Console.ReadLine()
    End Sub
End Module
Meine Datei sieht so aus:

5514968;21222 P ;42
5538817;8624 R ;35
5538424;AM 006 7697 ;35
5533662;AM 006 7698 ;35
5533559;AM 006 7699 ;35
3009153;BA 113 3001 ;74
3009194;BA 113 3002 ;74
3038285;BA 113 3003 ;35
....


Nun möchte ich Blockweise einlesen, also sagen wir die ersten 5 Zeilen. Das Problem hierbei ist, daß ich nicht weiß wieviel Char (hier 48) es sind, die ich ja beim einlesen angeben muss. So kann es vor kommen, daß ich eine Zeile nur abgeschnitten erhalte. Kann nicht sagen er sloo mir den Rest der Zeile auch noch einlesen?

Habe bereits im Forum nachgeschaut und keine passende Lösung gefunden.
Gruß PP
 

Peter Parker

Mitglied
Hallo,

sollte aber gleich einen ganzen Block einlesen nicht Zeilenweise.
könnte mir ggf, vorstellen es Zeilenweise in enen Temporären Array zu lesen und den dann anstatt des Blockes zu übergeben.

THX
 

Alexander Schuc

crazy-weasel
Peter Parker hat gesagt.:
Hallo,

sollte aber gleich einen ganzen Block einlesen nicht Zeilenweise.
könnte mir ggf, vorstellen es Zeilenweise in enen Temporären Array zu lesen und den dann anstatt des Blockes zu übergeben.

THX
Da du ja nicht weisst, wieviele Zeichen so ein 5-Zeilen-Block hat, ist es am praktischsten es mit der ReadLine-Methode und einer Schleife realisieren.
Kannst das ganze ja in einer eigenen Methode zusammenfassen, welche den Stream und die Anzahl der Zeilen für den Block erwartet, und dann einen String eben mit diesen Zeilen zurückgibt.