Textdatei in mehrere Textbox splitten?

  • VB.NET

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von Bernd.

    Textdatei in mehrere Textbox splitten?

    Hallo ich hab ein Problem (wen wunderts^^) Also ich habe folgendes Problem:

    ich hab ein String erstellt, welche trennung heißt und da lese ich eine datei ein über das OpenFiledialog ein (ist textdatei). So jetzt will ich es splitten, so das jede Zeile in eine andere Textbox kommt.

    Aber jetzt kommt das Problem: Der Debugger meckert, das Der Wert vom Typ "1-dimensionales Array von String" kann nicht in "String" konvertiert werden kann. Aber wenn ich ja es ändere in Integer kann ja meine Deklaration "trennung" keine Datei einlesen. Zudem weiß ich nicht wie ich das in den Code einarbeiten Soll, das jede Neue Zeile in ein anderen Textbox kommen soll.
    Zeile1 = Textbox1
    Zeile2 = Textbox2
    Zeile 3 = Textbox3
    Zeile 4 = Textbox4

    Hier mein Code:

    VB.NET-Quellcode

    1. Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
    2. OpenFileDialog1.ShowDialog()
    3. If OpenFileDialog1.CheckFileExists = True Then
    4. Dim trennung As String = System.IO.File.ReadAllText(OpenFileDialog1.FileName, System.Text.Encoding.Default)
    5. For Each line As String In trennung
    6. line = line.Split("|") ' Hier meckert der Debugger und hier muss ich ja die Anweisung geben das er immer zum Zeilenende lesen soll
    7. 'Hier wird es ja dann gesplittet in Textbox1, Textbox2,Textbox3,Textbox4
    8. MsgBox(line)
    9. Next
    10. Else
    11. MsgBox("Datei wurde nicht gefunden!", MsgBoxStyle.OkOnly, MsgBoxStyle.Information)
    12. End If
    13. End Sub


    Hoffe könnt mir helfen
    DB Chat: 54%

    VB.NET-Quellcode

    1. Dim zeile As new List(Of String)
    2. Dim sr As New StreamReader(Pfad, True)
    3. Dim zahl As Integer = 0
    4. While Not sr.EndOfStream
    5. zeile.Add(sr.ReadLine())
    6. End While
    7. For Each s In zeile
    8. zahl += 1
    9. Select Case zahl
    10. Case 1
    11. TextBox1.text = s.Split("|")
    12. Case 2
    13. TextBox2.text = s.Split("|")
    14. 'usw
    15. End Select



    Viel mir gerade spontan ein sollte eig. funktionieren ^^
    Also ich habe dein code gerade ausprobiert und da kommt genau der selbe fehler!

    Bernd schrieb:

    Zitat von »Davinho«



    For Each s In zeile
    zahl += 1

    was ist denn mit Zeile 0 ?
    ich glaub er will da immer die Zahl mit 1 Addieren, das die nächste Zeile ausgelesen werden soll
    sprich am anfang ist zahl = 0,
    nach dem ersten durchlauf wird einfach zahl = 0 +1 = zahl =1
    stehen

    oder meinste damit, das es erst am ende kommen sollte?
    DB Chat: 54%
    Mach es dir nicht so schwer.

    VB.NET-Quellcode

    1. Dim lines() As String = IO.File.ReadAllLines("Datei")
    2. For Each line As String In lines
    3. If Not String.IsNullOrEmpty(line) Then


    Er setzt als Globale Variable eine 0. addiert gleich beim ersten durchgang die 1 dazu. Somit wird Zeile 0 nie einglesen.
    Es sei den... Egal. ist auf jeden fall zu aufwendig.
    Also hab es mal mit deiner version Probiert, kommt aber trotzdem der gleiche fehler:

    VB.NET-Quellcode

    1. OpenFileDialog1.ShowDialog()
    2. If OpenFileDialog1.CheckFileExists = True Then
    3. Dim lines() As String = IO.File.ReadAllLines(OpenFileDialog1.FileName)
    4. For Each line As String In lines(4)
    5. If Not String.IsNullOrEmpty(line) Then
    6. Select Case line
    7. Case 1
    8. Textbox1.Text = line.Split(Environment.NewLine)
    9. Case 2
    10. Textbox2.Text = line.Split(Environment.NewLine)
    11. Case 3
    12. TextBox3.Text = line.Split(Environment.NewLine)
    13. Case 4
    14. Textbox4.Text = line.Split()
    15. End Select
    16. End If
    17. Next
    18. Else
    19. MsgBox("Datei wurde nicht gefunden!", MsgBoxStyle.OkOnly, MsgBoxStyle.Information)
    20. End If


    und jeder line.Split ist blau untegringelt und als fehlermeldung kommt:
    "Der Wert vom Typ "1-dimensionales Array von String" kann nicht in "String" konvertiert werden."

    Eig. les ich daraus, das er versucht einen String in einen String zu konvertieren, was aber nicht geht, da der String ja schon ein String ist...
    DB Chat: 54%
    Dein Code ist Quark ;)
    Du liest in der ForEach-Schleife Das 4 Element des Lines-Arrays aus.
    Demnach werden nur Chars (als String konvertiert) zurückgegeben.

    Die SelectCase Anweisung fragt einen String ab aber gibt nur Integer-Cases an.
    Und OPTION STRICT ON!!!

    VB.NET-Quellcode

    1. Dim Lines() = IO.File.ReadAllLines(OpenFileDialog1.FileName)
    2. TextBox1.Text = Lines(0)
    3. TextBox2.Text = Lines(1)
    4. TextBox3.Text = Lines(2)
    /nicht getestet

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

    VB.NET-Quellcode

    1. Dim lines() As String = IO.File.ReadAllLines("C:\Test\MeinText.txt")
    2. TextBox1.Text = lines(0)
    3. TextBox2.Text = lines(1)
    4. ...


    jetzt aber.
    @roterford
    lass den jungen mitdenken. der gibt sich mühe. werf ihm nicht alles hin. sonst lernt er nciht.