Mehrere Checkboxen und eine zu lange if verschachtelung

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Mehrere Checkboxen und eine zu lange if verschachtelung

    Ich habe ein Problem Liebe Damen und Herren,

    Ich habe 6 Checkboxen (Im Anhang zu sehen)

    Diese 6 Checkboxen werden nicht alle "True" oder alle "False" sein.
    Jeder User wird ein wirres durcheinander Zaubern und das Problem ist es in diesen Prozess.Start reinzukriegen:

    Spoiler anzeigen

    VB.NET-Quellcode

    1. If My.Settings.Mem & My.Settings.High & My.Settings.Cpu & My.Settings.Pause & My.Settings.Thread & My.Settings.Splash = True Then
    2. Dim StartInfo As New ProcessStartInfo(My.Settings.Arma3Pfad, "-connect=**** -port2302 -password=*** -noSplash -useBE -noLauncher -window -maxMem=" & My.Settings.Memt & " -high " & "-cpuCount=" & My.Settings.Cput & " -noPause " & "-exThread=" & My.Settings.Threadt & " -noSplash")
    3. Process.Start(StartInfo)
    4. ElseIf My.Settings.Mem & My.Settings.High & My.Settings.Cpu & My.Settings.Pause & My.Settings.Thread = True Then
    5. Dim StartInfo As New ProcessStartInfo(My.Settings.Arma3Pfad, "-connect=**** -port2302 -password=*** -noSplash -useBE -noLauncher -window -maxMem=" & My.Settings.Memt & " -high " & "-cpuCount=" & My.Settings.Cput & " -noPause " & "-exThread=" & My.Settings.Threadt)
    6. Process.Start(StartInfo)
    7. ElseIf My.Settings.Mem & My.Settings.High & My.Settings.Cpu & My.Settings.Pause Then
    8. Dim StartInfo As New ProcessStartInfo(My.Settings.Arma3Pfad, "-connect=**** -port2302 -password=*** -noSplash -useBE -noLauncher -window -maxMem=" & My.Settings.Memt & " -high " & "-cpuCount=" & My.Settings.Cput & " -noPause")
    9. Process.Start(StartInfo)
    10. End If


    Ich habe so angefangen die Abfrage zu machen jedoch habe ich direkt gemerkt das es ein Riesiger Aufwand ist das zu schreiben da es total viele Variablen gibt.

    Kann man das ganze vereinfachen oder wird es für mich so kompliziert bleiben.

    My.Settings.Mem (Checkbox)
    My.Settings.Memt (TextBox)
    My.Settings.High (Checkbox)
    My.Settings.Cpu (Checkbox)
    My.Settings.Cput (TextBox)
    My.Settings.Pause (Checkbox)
    My.Settings.Thread (Checkbox)
    My.Settings.Threadt (TextBox)
    My.Settings.Splash (Checkbox)

    Die Checkboxes können Ja nur "True" oder "False" ausgeben und von daher kann ich leider die Werte nicht umstellen auf "Nothing" und den Wert der dahinter stehen soll bei My.Settings.Mem soll das in diesem Fall -maxMem= sein und der My.Settings.Memt beinhaltet den Wert z.B. 4096 und so setzt sich das ganze zusammen.

    Wie zur Hölle hat Bohemia das geschafft und wie haben das andere Leute geschafft es mit Checkboxen und TextBoxen zu basteln und ich Verzweifel hier an den If .. Elseif ..Elseif .. Elsif usw. End If

    Bitte Helft mir .. :D


    MFG Zeeanq
    Bilder
    • Checkbox.png

      11,18 kB, 318×399, 52 mal angesehen
    Mach doch einfach einen String an den du das dann alles anhängst:

    VB.NET-Quellcode

    1. Dim start As String = ""
    2. If True Then start = start & " -argument"
    Musst dann für jede Checkbox ein If machen und dann immer das etwaige anhängen.

    Beitrag Nr. 700 *yay* ^^
    eigentlich hast Du es nicht so gemacht.
    du sollst jede checkbox genau einmal abfragen.

    z.b. Splah.
    'Wenn entsprechende Checkbox betätigt ist, hängst Du an start deine Argumente ran start &= " -splashscreen", oder eben wenn du es nicht betätigt hast, dann halt start &= " -NoSplashscreen"

    Wichtig ist halt, das Du jede Checkbox nur einmal durchläufst und dann das ergebniss hier dran hängst: start &= "Argument"

    Du darfst nicht so einen Wildwuchs machen, wie du es versucht hast:
    "wenn box 1, und box 2, und box 3 nicht, dann bla bla bla
    wenn box 1 NICHT und box 2 und box 3 NICHT, dann blablabla"

    hoffe war verständlich

    Zeeanq schrieb:

    In dem Spoiler kannst du sehen das
    der Code als solcher nicht lesbar ist und bei Fehlern und Erweiterungen absolut unpflegbar ist.
    Mach Dir eine Reihe von Hilfsvariablen, in denen Du Kombinationen von Boolean ablegst und Strings zusammenbaust.
    Die verwendest Du dann.
    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!

    Zeeanq schrieb:

    Ich liebe euch
    Wir lieben Dich noch viel mehr.

    VB.NET-Quellcode

    1. If My.Settings.Mem AndAlso My.Settings.High AndAlso My.Settings.Cpu AndAlso My.Settings.Pause Then
    2. Dim arg = "-connect=**** -port2302 -password=*** -noSplash -useBE -noLauncher -window -maxMem=" & My.Settings.Memt & " -high " & "-cpuCount=" & My.Settings.Cput & " -noPause "
    3. If My.Settings.Thread AndAlso My.Settings.Splash Then
    4. arg &= "-exThread=" & My.Settings.Threadt & " -noSplash"
    5. ElseIf My.Settings.Thread Then
    6. arg &= "-exThread=" & My.Settings.Threadt
    7. End If
    8. Dim StartInfo As New ProcessStartInfo(My.Settings.Arma3Pfad, arg)
    9. Process.Start(StartInfo)
    10. End If
    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!