ArgumentNullException wurde nicht behandelt

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von SpaceyX.

    ArgumentNullException wurde nicht behandelt

    hi
    ich hoffe mir kann jemand helfen
    habe nach paar jahren wieder angefangen mich in vb einzuarbeiten

    Ich habe das problem dass ich die werte einer aus einer for schleife mit doppelter if abfrage in arrays speichern und in listbox darstellen möchte.
    Bei Listbox 12 bis 16 funktioniert alles nur bei 17 (Zeile 66) kommt der Fehler ArgumentNullException ich kann mir nur erklären dass es mit dem dim string zusammenhängen kann.
    Ich finde leider in meinen alten Unterlagen nichts was mir weiterhilft
    Ach und das alles wird durch einen Button gestartet.
    In der Listbox sollte es am Ende so aussehen wobei die Reihenfolge jetzt frei gewählt ist:
    Metallmine 13
    Kristallmine 12
    Plasmatechnik 5
    ...

    Schonmal Danke für die Hilfe

    D@niel

    VB.NET-Quellcode

    1. Dim ASchritte As Integer
    2. Dim i12 As Integer
    3. Dim IMetmine As Integer
    4. Dim IKrismine As Integer
    5. Dim IDeutmine As Integer
    6. Dim IPlasma As Integer
    7. Dim IMSEMG As Double
    8. Dim ListBau(NumericUpDown1.Value - 1) As Double
    9. Dim ListMet(NumericUpDown1.Value - 1) As Double
    10. Dim ListKris(NumericUpDown1.Value - 1) As Double
    11. Dim ListDeut(NumericUpDown1.Value - 1) As Double
    12. Dim ListPlasma(NumericUpDown1.Value - 1) As Double
    13. Dim Listmine(NumericUpDown1.Value - 1) As String
    14. IMetmine = MetmineA
    15. IKrismine = KrismineA
    16. IDeutmine = DeutmineA
    17. IPlasma = plasma
    18. IMSEMG = KostenMSEA
    19. For ASchritte = 1 To NumericUpDown1.Value
    20. If List9(IMetmine) < List10(IKrismine) And List9(IMetmine) < List11(IDeutmine) And List9(IMetmine) < ((Fix(1000 * (2 ^ (IPlasma + 1))) + Fix(2000 * (2 ^ (IPlasma + 1))) * Metkurs / Kriskurs + Fix(500 * (2 ^ (IPlasma + 1))) * Metkurs / Deutkurs) / (Fix((30 * IMetmine * 1.1 ^ IMetmine * (Geologe + 1 * (IPlasma + 1) / 100)) * Unispeed - (30 * IMetmine * 1.1 ^ IMetmine * (Geologe + 1 * (IPlasma) / 100)) * Unispeed) + Fix((20 * IKrismine * 1.1 ^ IKrismine * (Geologe + 0.66 * (IPlasma + 1) / 100)) * Unispeed - (20 * IKrismine * 1.1 ^ IKrismine * (Geologe + 0.66 * (IPlasma) / 100)) * Unispeed) * Metkurs / Kriskurs)) Then
    21. IMSEMG = IMSEMG - List1(IMetmine) * planizahl
    22. If IMSEMG >= 0 Then
    23. IMetmine = IMetmine + 1
    24. Listmine(ASchritte - 1) = "Metallmine " & IMetmine - 1
    25. Else : Exit For
    26. End If
    27. ElseIf List10(IKrismine) < List9(IMetmine) And List10(IKrismine) < List11(IDeutmine) And List10(IKrismine) < ((Fix(1000 * (2 ^ (IPlasma + 1))) + Fix(2000 * (2 ^ (IPlasma + 1))) * Metkurs / Kriskurs + Fix(500 * (2 ^ (IPlasma + 1))) * Metkurs / Deutkurs) / (Fix((30 * IMetmine * 1.1 ^ IMetmine * (Geologe + 1 * (IPlasma + 1) / 100)) * Unispeed - (30 * IMetmine * 1.1 ^ IMetmine * (Geologe + 1 * (IPlasma) / 100)) * Unispeed) + Fix((20 * IKrismine * 1.1 ^ IKrismine * (Geologe + 0.66 * (IPlasma + 1) / 100)) * Unispeed - (20 * IKrismine * 1.1 ^ IKrismine * (Geologe + 0.66 * (IPlasma) / 100)) * Unispeed) * Metkurs / Kriskurs)) Then
    28. IMSEMG = IMSEMG - List2(IKrismine) * planizahl
    29. If IMSEMG >= 0 Then
    30. IKrismine = IKrismine + 1
    31. Listmine(ASchritte - 1) = "Kristallmine " & IKrismine - 1
    32. Else : Exit For
    33. End If
    34. ElseIf List11(IDeutmine) < List9(IMetmine) And List10(IKrismine) And List11(IDeutmine) < ((Fix(1000 * (2 ^ (IPlasma + 1))) + Fix(2000 * (2 ^ (IPlasma + 1))) * Metkurs / Kriskurs + Fix(500 * (2 ^ (IPlasma + 1))) * Metkurs / Deutkurs) / (Fix((30 * IMetmine * 1.1 ^ IMetmine * (Geologe + 1 * (IPlasma + 1) / 100)) * Unispeed - (30 * IMetmine * 1.1 ^ IMetmine * (Geologe + 1 * (IPlasma) / 100)) * Unispeed) + Fix((20 * IKrismine * 1.1 ^ IKrismine * (Geologe + 0.66 * (IPlasma + 1) / 100)) * Unispeed - (20 * IKrismine * 1.1 ^ IKrismine * (Geologe + 0.66 * (IPlasma) / 100)) * Unispeed) * Metkurs / Kriskurs)) Then
    35. IMSEMG = IMSEMG - List3(IDeutmine) * planizahl
    36. If IMSEMG >= 0 Then
    37. IDeutmine = IDeutmine + 1
    38. Listmine(ASchritte - 1) = "Deuteriummine " & IDeutmine - 1
    39. Else : Exit For
    40. End If
    41. ElseIf ((Fix(1000 * (2 ^ (IPlasma + 1))) + Fix(2000 * (2 ^ (IPlasma + 1))) * Metkurs / Kriskurs + Fix(500 * (2 ^ (IPlasma + 1))) * Metkurs / Deutkurs) / (Fix((30 * IMetmine * 1.1 ^ IMetmine * (Geologe + 1 * (IPlasma + 1) / 100)) * Unispeed - (30 * IMetmine * 1.1 ^ IMetmine * (Geologe + 1 * (IPlasma) / 100)) * Unispeed) + Fix((20 * IKrismine * 1.1 ^ IKrismine * (Geologe + 0.66 * (IPlasma + 1) / 100)) * Unispeed - (20 * IKrismine * 1.1 ^ IKrismine * (Geologe + 0.66 * (IPlasma) / 100)) * Unispeed) * Metkurs / Kriskurs)) < List9(IMetmine) And ((Fix((30 * IMetmine * 1.1 ^ IMetmine * (Geologe + 1 * (IPlasma + 1) / 100)) * Unispeed - (30 * IMetmine * 1.1 ^ IMetmine * (Geologe + 1 * (IPlasma) / 100)) * Unispeed) + Fix((20 * IKrismine * 1.1 ^ IKrismine * (Geologe + 0.66 * (IPlasma + 1) / 100)) * Unispeed - (20 * IKrismine * 1.1 ^ IKrismine * (Geologe + 0.66 * (IPlasma) / 100)) * Unispeed) * Metkurs / Kriskurs) / (Fix(1000 * (2 ^ (IPlasma + 1))) + Fix(2000 * (2 ^ (IPlasma + 1))) * Metkurs / Kriskurs + Fix(500 * (2 ^ (IPlasma + 1))) * Metkurs / Deutkurs)) < List10(IKrismine) And ((Fix((30 * IMetmine * 1.1 ^ IMetmine * (Geologe + 1 * (IPlasma + 1) / 100)) * Unispeed - (30 * IMetmine * 1.1 ^ IMetmine * (Geologe + 1 * (IPlasma) / 100)) * Unispeed) + Fix((20 * IKrismine * 1.1 ^ IKrismine * (Geologe + 0.66 * (IPlasma + 1) / 100)) * Unispeed - (20 * IKrismine * 1.1 ^ IKrismine * (Geologe + 0.66 * (IPlasma) / 100)) * Unispeed) * Metkurs / Kriskurs) / (Fix(1000 * (2 ^ (IPlasma + 1))) + Fix(2000 * (2 ^ (IPlasma + 1))) * Metkurs / Kriskurs + Fix(500 * (2 ^ (IPlasma + 1))) * Metkurs / Deutkurs)) < List11(IDeutmine) Then
    42. IMSEMG = IMSEMG - (Fix(1000 * (2 ^ IPlasma)) + Fix(2000 * (2 ^ IPlasma)) * Metkurs / Kriskurs + Fix(500 * (2 ^ IPlasma)) * Metkurs / Deutkurs)
    43. If IMSEMG >= 0 Then
    44. IPlasma = IPlasma + 1
    45. Listmine(ASchritte - 1) = "Plasmatechnik " & IPlasma - 1
    46. Else : Exit For
    47. End If
    48. End If
    49. ListBau(ASchritte - 1) = IMSEMG
    50. ListMet(ASchritte - 1) = IMetmine
    51. ListKris(ASchritte - 1) = IKrismine
    52. ListDeut(ASchritte - 1) = IDeutmine
    53. ListPlasma(ASchritte - 1) = IPlasma
    54. Next ASchritte
    55. For i12 = 0 To NumericUpDown1.Value - 1
    56. ListBox12.Items.Add(ListBau(0 + i12))
    57. ListBox13.Items.Add(ListMet(0 + i12))
    58. ListBox14.Items.Add(ListKris(0 + i12))
    59. ListBox15.Items.Add(ListDeut(0 + i12))
    60. ListBox16.Items.Add(ListPlasma(0 + i12))
    61. ListBox17.Items.Add(Listmine(0 + i12))
    62. Next i12
    Hey,

    da hilft Dir wohl nur, den Code Schritt für Schritt zu debuggen und die Werte der Variablen zu prüfen.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    Danke für das Angebot ich hab gerade mal Schritt für Schritt alles durchgeschaut habe vielleicht den Fehler gefunden. Schau es mir morgen früh nochmal an. Komme aber gerne auf das Angebot zurück.
    Wenn meine Vermutung richtig ist, ist das Problem, dass ich ein Array mit fester Größe definiert habe und ich aber es wegen einem gewollten Abbruch durch die Schleife nicht nicht komplett "fülle", dann sind ja die "restlichen" Werte nothing. Muss jetzt probieren wenn ich die Größe variabel definiere ob dann das Problem weiter besteht.
    Ok hoff es war jetzt nicht zu laienhaft formuliert :D