Der Index ist Ausserhalb des Arrays

  • VB.NET

Es gibt 24 Antworten in diesem Thema. Der letzte Beitrag () ist von Littleboy2009.

    Der Index ist Ausserhalb des Arrays

    Guten Tag,
    Könnte mir einer sagen was an diesen Code Falsch ist :

    Sry vergessen:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    3. For Each zeilen As String In IO.File.ReadAllText("C:\Users\Mike\Documents\Verlauf.txt").Split(vbNewLine)
    4. If TextBox1.Text = zeilen.Split("|")(My.Settings.Vokabelstand) Then MsgBox("Eingabe richtig!") 'wenn deutschevokabeln verglichen werden sollen
    5. Next
    6. My.Settings.Vokabelstand += 1
    7. TextBox1.Text = ""
    8. My.Settings.Save()
    9. Übung.Text = My.Settings.Vokabelstand
    10. End Sub
    11. End Class


    Ja ist dein Code ^^
    Hab den bisschen umgeändert weil wollte auch schonmal sowas machen
    in der Datei steht:

    Affe|Monkey
    Baum|Tree
    Ja|Yes
    Nein|No
    Doof|Dumb
    U-bahn|Subway
    Zug|Train
    Apfel|Apple

    Immer abwechselnt
    deutsch Englisch
    Deutsch Englisch
    Habs jetzt:
    Sry vergessen:


    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    3. For Each zeilen As String In IO.File.ReadAllText("C:\Users\Mike\Documents\Verlauf.txt").Split(vbNewLine)
    4. If TextBox1.Text = zeilen.Split("|")(My.Settings.Vokabelstand) Then MsgBox("Eingabe richtig!") 'wenn deutschevokabeln verglichen werden sollen
    5. Next
    6. My.Settings.Vokabelstand += 1
    7. TextBox1.Text = ""
    8. My.Settings.Save()
    9. Übung.Text = My.Settings.Vokabelstand
    10. End Sub
    11. End Class



    Ja ist dein Code ^^
    Hab den bisschen umgeändert weil wollte auch schonmal sowas machen
    in der Datei steht:

    Affe|Monkey
    Baum|Tree
    Ja|Yes
    Nein|No
    Doof|Dumb
    U-bahn|Subway
    Zug|Train
    Apfel|Apple

    Immer abwechselnt
    deutsch Englisch
    Deutsch Englisch
    ok das is leicht du hast diese zeile hier irgendwie dazwischen gemogelt was soll die bewirken ? ?( :

    VB.NET-Quellcode

    1. My.Settings.Vokabelstand += 1

    die musst du wegmachen weil irgendwann wie in einer tabelle wenn du nur zwei spalten hast aber die dritte die nicht da ist auslesen willst kann es ja nicht gehen!
    diese codestelle muss immer so sein (mit 1 oder 0 nicht mehr als eins!)

    VB.NET-Quellcode

    1. If TextBox1.Text = zeilen.Split("|")(0) 'Für Deutsch ist die 0 für 1 ist englisch aber geht nur bei deiner txt-datei so !


    das wars eigentl. od ? ?(
    naja das passiert alles in der for each -schlaufe die geht zeile um zeile durch !
    wenn du den code mal nimmst merkstes:

    VB.NET-Quellcode

    1. For Each zeilen As String In IO.File.ReadAllText("C:\Users\Mike\Documents\Verlauf.txt").Split(vbNewLine)
    2. MsgBox("Jetzt wird das Wort " & zeilen.split("|")(0) & " geprüft. ( " & zeilen.split("|")(1) & " )") 'wenn deutschevokabeln verglichen werden sollen
    3. Next


    bei dem Code wirst du es bemerken was ich meine probier ihn mal aus ! :thumbup:
    Bei deinen Code Kommen soviele MsgBoxenwie Vokabeln.
    Und bei meinen Code da kann ihc immer nur Affe eingeben und der Zeigt Richtig an

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    3. For Each zeilen As String In IO.File.ReadAllText("C:\Users\Mike\Documents\Verlauf.txt").Split(vbNewLine)
    4. If TextBox1.Text = zeilen.Split("|")(0) Then MsgBox("Eingabe richtig!") 'wenn deutschevokabeln verglichen werden sollen
    5. Next
    6. TextBox1.Text = ""
    7. End Sub
    8. End Class
    Also hab ja eine TextBox
    da will ich das Erste wort eingeben
    Nach klick auf die MsgBox das Nächste wort
    Danach das Nächste
    und wieder das NÄchste.
    Bei mir ist es grade aber so:
    ich gebs ein die msgbox kommt
    ich klick auf Ok
    alle wörter sind Falsch ausser schon wieder affe
    und affe bleibt das wort auch biem 20x mal
    achso verstehe! da musst du das so machen (wichtig ist das du bei jeder neuen vokabelkontrolle aktuellevokabel = 0 setzt!)
    lokale deklaration:

    VB.NET-Quellcode

    1. private vokabelndeutsch as new list(of String)
    2. private vokabelnenglisch as new list(of String)
    3. private aktuellevokabel as long = 0


    ins form load ereignis:

    VB.NET-Quellcode

    1. For Each zeilen As String In IO.File.ReadAllText("C:\Users\Mike\Documents\Verlauf.txt").Split(vbNewLine)
    2. vokabelndeutsch.add(zeilen.split("|")(0))
    3. vokabelnenglisch.add(zeilen.split("|")(1))
    4. Next


    ins buttonereignis(wo vokabel überprüft werden soll)

    VB.NET-Quellcode

    1. if textbox1.text = vokabelndeutsch.item(aktuell) then Msgbox "Richtig!" 'DieserCode wenn du deutsche Vokabeln eingibst!
    2. if textbox1.text = vokabelnenglisch.item(aktuell) then Msgbox "Richtig!" 'DieserCode wenn du englische Vokabeln eingibst!
    3. aktuell += 1


    so das wars eigentl. :thumbup:
    Sry hab ausfersehen Load und Button vertauscht.
    Aber trtoztdem noch ein Fehler beim Load ereignis genau:
    vokabelnenglisch.Add(zeilen.Split("|")(1))
    Der Index war außerhalb des Arraybereichs.
    IndexOutOfRangeException wurde nicht behandelt
    probier mal das ins load erignis : :thumbsup:

    VB.NET-Quellcode

    1. try
    2. For Each zeilen As String In IO.File.ReadAllText("C:\Users\Mike\Documents\Verlauf.txt").Split(vbNewLine)
    3. vokabelndeutsch.add(zeilen.split("|")(0))
    4. vokabelnenglisch.add(zeilen.split("|")(1))
    5. Next
    6. catch
    7. end try


    P.S. wäre praktisch wenn du schnell schauen würdest obs jetzt geht , denn ich bin ziemlich müde ^^