Array mit String, Boolean und Object(checkbox)

  • VB.NET

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

    Array mit String, Boolean und Object(checkbox)

    Hallo,
    ich probiere vergeblich ein Array aufzusetzen, welches einen String, einen Boolean und ein Object CheckBox enthält. Ich habe sämtliche Seiten durchgeguckt aber ich blicke nicht durch, wie man mehrdimensionale Arrays erstellt und dann auch noch mit mehreren typen -.-. Falls einer Lua kann/kennt hätte ich hier mal einen Beispielcode wie denn das ganze aussehen sollte:

    Quellcode

    1. //Lua example
    2. settings= {
    3. 0 = {0 = "Chat", 1 = CheckboxChat, 2 = true},
    4. 1 = {0 = "MsgBox", 1 = CheckboxMsgBox, 2 = false},
    5. 2 = {0 = "Time", 1 = CheckboxTime, 2 = false},
    6. 3 = {0 = "Preview", 1 = CheckboxPreview, 2 = true},
    7. }


    Was möchte ich machen? Geht das vlt. auch anders?
    Ich möchte aus einer Textdatei einstellungen laden. In jeder zeile steht eine definition. Beispiel:

    Quellcode

    1. [MsgBox]=false
    2. [Preview}=false
    3. [chat]=true
    4. [Time]=false


    Also ich möchte es auslesen und dann die ausgelesenen Einstellungen also erstmal einstellen ob die Checkbox "checked" oder nicht ist. Damit wollte ich halt gucken, ok welche value gehört zu welchem object. Im Fenster würde ich dann definieren welcher valuename zu welcher checkbox gehört. Und das würde ich dann halt in einem array machen?

    Settings Form


    Wenn ihr bessere vorschläge habt das zu manager also die einstellungen zu speichern und auszulesen dann bin ich für alle vorschläge offen :thumbup: wäre nett wenn ihr dann ein kleinen beispiel code posten könntet wenns keine arbeit macht :)

    Danke, Niklas

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Freestyler100“ ()

    Ahoi,

    die Einstellungen zu hinterlegen geht bestimmt einfacher, aber ich versteife mich jetzt einfach mal auf deinen Versucht.
    Benutzte kein mehrdimensionales Array, so etwas ist imho, viel zu unflexible, gerade was das füllen angeht.
    Denk mal über einen Ansatz mit einer List ... diese assoziierst du mit einer eigenen Klasse, die die 3 möglichen Datentypen als Parameter enthält.

    Also bspw. (Achtung C#)

    C#-Quellcode

    1. List<OwnClass> Settings = new List<OwnClass>();
    2. class OwnClass
    3. {
    4. public string Object;
    5. public bool Value;
    6. public CheckBox Box;
    7. }
    Grüße Manu

    Was Gott dem Menschen erspart hat, kann der Computer.
    Billy ©, (*1932), Schweizer Aphoristiker
    Quelle: www.Aphorismen.de
    Leute..., ich bin zu dumm :D Ich kenne mich noch nicht so viel mit vb.net aus und komme deshalb nicht weiter und ich habe auch nichts im internet gefunden.
    Also: Ich habe jetzt eine neue klasse erstellt die eine checkbox und einen string enthält

    VB.NET-Quellcode

    1. Public Class combinedObject
    2. Private oname As String
    3. Private ocheckbox As CheckBox
    4. Public Property name() As String
    5. Get
    6. Return oname
    7. End Get
    8. Set(ByVal name As String)
    9. oname = name
    10. End Set
    11. End Property
    12. Public Property checkbox() As CheckBox
    13. Get
    14. Return ocheckbox
    15. End Get
    16. Set(ByVal checkbox As CheckBox)
    17. ocheckbox = checkbox
    18. End Set
    19. End Property
    20. Public Sub New(ByVal Name As String, ByVal Checkbox As CheckBox)
    21. oname = Name
    22. ocheckbox = Checkbox
    23. End Sub
    24. End Class


    dann habe ich alle checkboxen und deren namen zusammen in meinem neuen objekt initialisiert
    hier nur ein ausschnitt

    VB.NET-Quellcode

    1. Dim combiObjChatChat As combinedObject =
    2. New combinedObject("ChatChat", CheckBoxNotificationsChatChat)
    3. Dim combiObjChatMsgBox As combinedObject =
    4. New combinedObject("ChatMsgBox", CheckBoxNotificationsChatMsgBox)
    5. Dim combiObjChatTime As combinedObject =
    6. New combinedObject("ChatTime", CheckBoxNotificationsChatTime)


    danach habe ich probiert mein neues objekt was nun name und checkbox enthielt in eine liste zu stecken

    VB.NET-Quellcode

    1. lstComboboxes.Add(combiObjChatChat)
    2. lstComboboxes.Add(combiObjChatMsgBox)
    3. lstComboboxes.Add(combiObjChatTime)


    Mein Fehler: Bei hinzufügen des neuen objekts in die liste tritt eine System.NullReferenceException auf

    Quellcode

    1. Ein Ausnahmefehler des Typs "System.NullReferenceException" ist in ChatClient.exe aufgetreten.
    2. Zusätzliche Informationen: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.


    Ich hab herrausgefunden, dass man verweise auf das original weiter geben kann und kopien und das das mit byval und byref geht aber was mir das wirklich im zusammenhang mit meinem fehler bringt habe ich nicht wirklich verstanden :|

    Vielleicht könnt ihr mir ja nochmal helfen :thumbup:
    Schon wenn ich das erste item in die liste einfügen möchte:

    VB.NET-Quellcode

    1. lstComboboxes.Add(combiObjChatChat)

    ich kann aber auf das object zugreifen und mir beides ausgeben lassen:

    VB.NET-Quellcode

    1. combiObjChatChat.checkbox.visible = false
    2. msgbox(combiObjChatChat.name)

    das geht alles :/
    also ich weiß nicht woran es liegt.
    Untersuche mit einem Haltepunkt im Debugger, was Nothing ist. Ich tippe auf lstComboboxes.

    Grüß
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Leer bedeutet, dass 0 Objekte drin sind. Die Liste ist ein Referenztyp und wenn die ​Nothing ist, hat sie keine Instanz. Das ist ein Unterschied.
    Du kannst nur mit Objekten arbeiten und wenn dieses Objekt nicht erstellt wurde, geht nichts.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Ne, die Syntax erfordert das new-Schlüsselwort.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!: