Crash beim starten einer Form

  • VB.NET

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

    Crash beim starten einer Form

    Ich bin relativ neu In Visual Basic und schreibe grad an einem kleinen Spiel in dem man eine Zahl erraten muss.
    Wenn ich jetzt in meiner Hauptform (der screen zum auswählen des schwierigkeitsgrades) das spiel aufrufen lasse kommt die Fehlermeldung:

    Fehler beim Erstellen des Formulars. Weitere Informationen finden Sie in Exception.InnerException. Fehler: "minValue" kann nicht größer als maxValue sein.
    Parametername: minValue.




    Hier ist der Quellcode bis zum ersten Knopf:

    VB.NET-Quellcode

    1. Public Class Game Public Level As String
    2. Private Sub Leicht_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Leicht.Click Level = 1 Spiel.Show() Me.Hide() End Sub





    Danke schon mal im voraus :)
    Mit einem String z.B wenn der String 1 ist, ist das spiel leicht (eine Zahl von 1-10) wenn der String 2 ist ist das Spiel mittel ,eine Zahl von 1-20 usw.
    Und mit den 2 strings (1 und die Zahl vom Level) generiert ein Zufallsgenerator eine zahl die man erraten muss.
    Soll ich den Quellcode vom Spiel selbst Posten???

    Gruß Bernd
    naja der Fehler ist eigentlich recht klar.
    Du hast irgendwo bei minValue einen größeren Wert als der maxmial erlaubte Wert ist --> klar dass es eine Exception gibt. Doch wo genau dies der Fall ist kann man aufgrund deiner Fehlerbeschreibung nicht sagen.


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.

    Teilweise gelöst

    Ich hab das Problem teilweise gelöst. Wenn ich dem string BIS gleich eine Zahl zuweise geht es doch die Zahl wird nicht von:

    VB.NET-Quellcode

    1. Public Sub Stufe()
    2. If Game.Level = 1 Then
    3. BIS = 10
    4. ElseIf Game.Level = 2 Then
    5. BIS = 20 Else
    6. BIS = 30 End If
    7. End Sub


    geändert. Wisst ihr wie ich den String wirklich ändern kann ???


    Gruß Bernd




    Ok ich hab es gelöst. ;)
    Der Generator hatte nen falschen BIS wert (Keinen da der "Levelwandler" nicht funktioniert hat.)
    Ich hab den "Levelwandler" in ein form_load Ereignis gepackt und jetzt geht es. Danke ;)
    Wen es interessiert , hier ist der gefixte Code des Generators :

    VB.NET-Quellcode

    1. Public Class Spiel
    2. Dim BIS As String = 5
    3. Dim Versuche As String = 5
    4. Dim ZuZAHL As New System.Random
    5. Dim VON As String = 1
    6. Dim Zahl As Integer = ZuZAHL.Next(VON, BIS)
    7. Private Sub Spiel_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    8. If Game.Level = "1" Then 'Game ist die Hauptform und Level ist der String der die Schwierigkeitsstufe angibt
    9. BIS = 10
    10. ElseIf Game.Level = "2" Then
    11. BIS = 20
    12. Else BIS = 30
    13. End If
    14. End Sub

    Edit by ~blaze~:
    Doppelpost
    -->*Beiträge zusammengefasst*

    Dieser Beitrag wurde bereits 7 mal editiert, zuletzt von „Bernd322f“ ()

    Bitte editiere die Posts statt Doppelposts zu machen und formattiere den Code noch mal anständig. Beim ersten Post war das noch kein Problem, aber jetzt erkennt man die einzelnen Zeilen gar nicht mehr.

    Übrigens ist es empfehlenswert, nicht Strings zu verwenden. Random.Next gibt dir ebenfalls Integer-Werte zurück. Daher ist String unnötig in deinem Fall. Strings verwendet man für Zeichenketten, also z.B. Texte, Integers sind (32-Bit-)Ganzzahlen.

    Gruß
    ~blaze~

    VB.NET-Quellcode

    1. 'Wo
    2. 'Liegt
    3. 'das
    4. 'Problem


    VB.NET-Quellcode

    1. Option Strict On
    2. Public Class Form1
    3. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    4. Dim f As Integer = 1
    5. For i As Integer = 0 To f - 1
    6. MsgBox(f)
    7. Next
    8. End Sub
    9. End Class


    Haste vielleicht die Seite mit NoScript geblockt?
    1. Option Strict On - für das ganze Projekt.
    2. Falls Game Dein Hauptfenster und Spiel ein anderes Fenster ist, kannst Du nicht per Game.Level darauf zugreifen, Du benötigst eine Instanz.
    Wenn Du (1) gelöst hast, reden wir weiter. :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!
    Es funkioniert jetzt ja. Nur der Teil der für den Generator die Zahl die angibt bis was er generieren sollte war in einem Private sub der nicht aufgerufen wurde.
    Jetzt steht es in einem Form_Load Ereignis.

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