Kann Inhalt einer Textdatei in Visual Basic 2013 nicht auslesen

  • VB.NET
  • .NET (FX) 1.0–2.0

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Kann Inhalt einer Textdatei in Visual Basic 2013 nicht auslesen

    Hallo,
    ich wollte den Inhalt einer Textdatei im UTF-8-Format auslesen und in einen Label bei Druck auf Button1
    anzeigen lassen. Leider kommt immer die Meldung in der MsgBox d.h., "Die Datei kann nicht eingelesen werden!".

    Ich arbeite mit Visual Studio 2013 unter Windows 7. Die Befehle habe ich aus der Literatur von Visual Basic 2010.
    Denke aber nicht, dass das mein Problem ist.

    Und dann kommt noch der Fehler1 "Der Wert vom Typ "Microsoft.VisualBasic.Collection" kann nicht in "String"
    konvertiert werden."

    Bestimmt hat jemand ein einfaches Beispiel zum Auslesen einer Datei.

    Danke und Gruß vom Jürgen

    VB.NET-Quellcode

    1. Imports System.IO
    2. Public Class Form1
    3. Const Pfad = "E:\"
    4. Shared Temperaturen As New Collection()
    5. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    6. LoadText(Pfad + "temp2.txt")
    7. End Sub
    8. Sub LoadText(ByVal Dateiname As String)
    9. Try
    10. Dim Text As String
    11. Using Datei As StreamReader = New StreamReader(Dateiname)
    12. Do
    13. Text = ReadLine()
    14. Temperaturen.Add(Text)
    15. Loop Until Text Is Nothing
    16. Datei.Close()
    17. End Using
    18. Catch
    19. MsgBox("Datei nicht gefunden!")
    20. Close()
    21. End Try
    22. End Sub
    23. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    24. Label1.Text = Temperaturen
    25. End Sub
    26. Private Function ReadLine() As String
    27. Throw New NotImplementedException
    28. End Function
    29. End Class
    Was? Wie? Ohje, nein.
    Bevor Du weitermachst, bitte die empfohlenen VS-Einstellungen verwenden. Collection und MsgBox sind VB6.
    Nimm einfach Dim FileLines = IO.File.ReadAllLines(DeinDateipfad), um alle Dateizeilen erstmal in ein StringArray zu packen. Das Gesums von Zeile#16-#22 brauchst Du dann nicht mehr.
    Label1.Text = Temperaturen? Option Strict On! Danach geht's weiter.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Danke für die Hinweise.
    Option Strict On steht meist ganz oben in meinem Programm. StreamReader scheint aber noch aktuell zu sein. Habe jetzt mal auf einem anderen PC
    mit Windows 10 Visual Studio 2025 installiert. Über 18 GB auf dem Laufwerk! Die Version 2013 hatte noch 6 GB! Vielleicht irgendwo noch Schattenkopien
    beim Installieren über Internet. Habe mir das Buch von Thomas Theis zugelegt (ist ganz brauchbar) und erst mal so gelöst:

    Dim Temperaturen As String
    Temperaturen = My.Computer.FileSystem.ReadAllText("e:\temp2.txt")
    MsgBox(Temperaturen)

    Werde aber natürlich auch Deinen Code mal ausprobieren.

    Das Ziel ist aber demnächst Daten von einer S7-1200 in eine csv-Datei zu speichern. Die Kommunikation über die RS232 funktioniert dank den Hinweisen
    von RodFromGermany for einem halben Jahr recht gut.
    Nochmals danke
    Jürgen

    Was hast Du gegen die MsgBox?

    VB-MD schrieb:

    MsgBox
    ist VB6-Ranz-Mist.
    Strict On kannst Du im Studio selbst hinterlegen, das wird dann ins Projekt übernommen, so dass Du es nicht in jede Datei einzeln eintragen musst.
    Visual Studio - Empfohlene Einstellungen
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    VB-MD schrieb:

    Aber viel hat sich nicht geändert.
    Ein neues Projekt sollte automatisch mit Option Strict On voreingestellt sein :!:
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hallo nochmal
    wollte Euch das kleine, fertige Programm nicht vorenthalten. Habe doch erst mal den StreamReader bemüht!
    Zusätzlich wird noch die Existenz der Datei und deren Größe beim Laden der Form1 abgefragt. Arbeite aber noch daran ....

    VB.NET-Quellcode

    1. Imports System.IO
    2. Public Class Form1
    3. Const Pfad = "E:\test.txt"
    4. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    5. cmdBeenden.BackColor = Color.FromArgb(200, 150, 0)
    6. Dim DatGroesse As Long
    7. If My.Computer.FileSystem.FileExists(Pfad) Then
    8. DatGroesse = FileLen(Pfad)
    9. lblDatInfo.Text = "Datei vorhanden mit " & CStr(DatGroesse) & " Byte"
    10. lblDatInfo.BackColor = Color.FromArgb(120, 255, 120)
    11. Else
    12. lblDatInfo.Text = ("Datei fehlt!")
    13. lblDatInfo.BackColor = Color.FromArgb(255, 120, 120)
    14. End If
    15. End Sub
    16. Private Sub cmdLesen_Click(sender As Object, e As EventArgs) Handles cmdLesen.Click
    17. Try
    18. Dim DatInhalt As New FileStream(Pfad, FileMode.Open)
    19. Dim DatLesen As New StreamReader(DatInhalt)
    20. Dim Zeile As String
    21. Do Until DatLesen.Peek() = -1 '"-1" ist das Dateiende
    22. Zeile = DatLesen.ReadLine()
    23. lblZeile.Text &= Zeile & vbCrLf 'Zeile für Zeile anhängen
    24. Loop
    25. DatLesen.Close()
    26. Catch ex As Exception
    27. MessageBox.Show("Datei Fehler!", "Foult", MessageBoxButtons.OK, _
    28. MessageBoxIcon.Information)
    29. End Try
    30. End Sub
    31. Private Sub cmdBeenden_Click(sender As Object, e As EventArgs) Handles cmdBeenden.Click
    32. Close()
    33. End Sub
    34. End Class


    Danke und bis demnächst
    Jürgen
    @VB-MD Mach es doch gleich richtig:

    VB.NET-Quellcode

    1. TextBox1.Lines = System.IO.File.ReadAllLines(DEINE_DATEI)
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    …wie bereits in Post#2 zu (über)lesen war.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()

    @VaporiZed Da können wir ja mal intensiv beobachten, ob doppelt wirklich besser hält hilft. :thumbsup:
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!