InvalidArgument=Value Fehler

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von ThePlexian.

    InvalidArgument=Value Fehler

    Hallo

    Ich bekomme seit neuen einen komischen Fehler bei diesem Code:

    VB.NET-Quellcode

    1. 'Wenn Enter gedrückt wurde
    2. If GetAsyncKeyState(Keys.Enter) Then
    3. For i = 0 To ListBox1.Items.Count - 1
    4. If consoleText.Lines(consoleText.Lines.Count - 2).ToString = ListBox1.Items(i) Then
    5. If Schlafen = True Then
    6. consoleText.Text += "zZ... zZ... zZ..." & vbCrLf & vbCrLf
    7. Else
    8. consoleText.Text += ListBox2.Items.Item(i).ToString & vbCrLf & vbCrLf
    9. End If
    10. End If
    11. Next
    12. End If


    Zur Erklärung: Ich habe zwei Listboxen und in denen sind genau gleich viele Items sagen wir mal 10. Wenn nun der Text des 4 Items der ListBox1 "Hallo" ist und ich in die Textbox "consoleText", "Hallo" schreibe dann soll auch der Text aus der zweiten Listbox mit der selben Zahl (in diesem Fall 4) geschrieben werden. Das funktioniert auf bei Item 0-5, erst ab 6 wirft er den Fehler.

    So sieht der Fehler aus:


    Und dabei kann ein Integer doch sehr wohl größer als 6 sein. Was hab ich falsch gemacht?

    MFG
    PhoenixBlaster :)
    Und dabei kann ein Integer doch sehr wohl größer als 6 sein

    Natürlich darf ein Integer größer 6 sein.

    Nur Du darfst niemals einen Int/Long der größer ist, als die Anzahl der Elemente einer Menge (Array oder z. B. List(Of T)) als Index verwenden.
    Also eine Liste mit 3 Elementen hat einen max. Index von 2 da man bei 0 anfängt.

    Liste(0)
    Liste(1)
    Liste(2)

    Count oder Length gibt immer die tatsächliche Anzahl zurück:

    Liste.Count = 3

    Wenn Du jetzt Liste(Liste.Count) benutzt gibt es eine "OutOfRangeException" weil es das Element Liste(3) ja nicht gibt.
    ja ich weiß das 3 Elemente einen Index von 2 haben deswegen schreib ich ja auch im Code "ListBox1.Items.Count - 1"

    Dann sollte es doch eigentlich funktionieren, oder?
    Und bei Item 0-5 funktioniert es ja auch, der Fehler kommt erst wenn ich ein Item aufrufe das einen Index über 5 hat.
    Solche fehler lassen sich normalerweise sehr einfach und schnell durch das benutzen der Tools von Visual Studio finden und beheben.
    Steppe mit F8 bzw. F11 und F10 je nach IDE Version Schritt für Schritt durch den Programmablauf hindurch.
    Packe dabei wenn nötig einzelne Variabeln/Eigenschaften (Werte) in die Überwachung (Rechtsklick -> Zur Überwachung hinzufügen).
    Schau dir an welche Variabel Wann welchen Wert hat und Wo genau die Fehlermeldung auftaucht.
    Somit kannst Du (fast immer) ganz schnell den Fehler finden und beseitigen, ein Versuch ist es Wert.
    Danke ich hab den Fehler gefunden

    Lösung: Ich erstelle einfach vor dem Vorgang eine Variable um gib ihr die Zahl der Anzahl aller Items und dann geht's.

    Manchmal versteh ich VS echt nicht, aber ist ja gut das es funktioniert!

    Danke an alle die mir geholfen haben :thumbsup:

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „PhoenixBlaster“ ()

    Pausiere den timer oder steppe mit F10 (Prozedurschritt) durch.
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."
    überspringt er diesen Teil

    Kann ich mir nicht vorstellen.

    verfängt sich dann in eimem Timer

    Versuche diesen vorrübergehen auszuschalten.
    Falls es nicht geht, versuche einen "Bedingten Haltepunkt" zu erstellen der zum richtigen Zeitpunkt die Ausführung Pausiert.

    Weißt du vielleicht was ich an dem geposteten Code ändern muss?

    Nicht exakt, entweder knallt es hier ListBox1.Items(i) oder hier ListBox2.Items.Item(i).ToString
    i Ist entweder zu groß oder negativ.