Item aus mehrdimensionaler List of auslesen

  • VB.NET

Es gibt 17 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Item aus mehrdimensionaler List of auslesen

    Hallo zusammen,

    ich habe mal eine kleine, sicherlich einfache, Frage an euch: Wie kann ich ein bestimmtes Item aus einer mehrdimensionalen List Of (Interger) auslesen?

    Ich lege ne List Of folgendermaßen an:

    VB.NET-Quellcode

    1. Public LRSchuss As New List(Of Integer())
    2. LRSchuss.Add(New Integer() {Convert.ToInt16(MaskedTextBox4.Text), Convert.ToInt16(MaskedTextBox3.Text), Convert.ToInt16(MaskedTextBox20.Text)})

    Diese hat 3 "Spalten" und mehrere Zeilen. Ich weiß genau wo was steht. Und nun will ich woanders im Code auf einzelne Items zugreifen. Wie geht das?

    Gerne bin ich auch bereit was anderes wie ne List Of zu verwenden. Wie gesagt ich habe in jeder Zeile 3 Werte stehen. Diese untereinander zu schreiben ist unübersichtlich, deswegen habe ich mich für etwas mehrdimensionales entschieden. (ob dies hier wirklich mehrdimensional ist oder ob das anders heißt bei ner List Of sei mal dahingestellt)

    Vielen Dank schonmal.
    Grüße
    Das wäre einfach LRSchuss(x)(y).
    Nur zur Begrifflichkeit, das ist keine mehrdimensionale List, sowas gibt es nicht, das ist ne ganz normale List, die Arrays enthält. Bei sowas springt bei mir auch gleich der Schalter um: bis du sicher, dass es nicht besser mit ner Klasse/Struktur gelöst wäre, als Arrays?
    Wies am besten zu lösen wäre, hängt davon ab, was das überhaupt werden soll.
    Ach und Integer ist übrigens Int32, nicht Int16 (wir sind hier nicht mehr in VB6), sauberer wäre es aber sowieso noch mit Integer.Parse, Convert braucht man nur in einigen Sonderfällen.
    @tina83:: Was soll denn das ganze werden?
    Was für Daten liegen in dieser List?
    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!
    da sind nur Interger-Werte drin. Je 3 Zahlen gehören zu einem "Datensatz", deswegen sind diese in einer Zeile. Und insgesamt habe ich 8 Zeilen, die über ne händische Eingabe in Textboxen gefüllt werden. Später im Code greife ich auf einzelne Items zu.

    @Artentus
    mittlerweile heißts jetzt:

    VB.NET-Quellcode

    1. LRSchuss.Add(New Integer() {Integer.Parse(MaskedTextBox4.Text), Integer.Parse(MaskedTextBox3.Text), Integer.Parse(MaskedTextBox20.Text)})

    tina83 schrieb:

    Datensatz
    Sieh Dir mal das an:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Class TrippleInt
    3. Public Property i1 As Integer
    4. Public Property i2 As Integer
    5. Public Property i3 As Integer
    6. Public Sub New(ByVal i As Integer, ByVal j As Integer, ByVal k As Integer)
    7. Me.i1 = i
    8. Me.i2 = j
    9. Me.i3 = k
    10. End Sub
    11. End Class
    12. Private LRSchuss As New List(Of TrippleInt)
    13. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    14. LRSchuss.Add(New TrippleInt(1, 2, 3))
    15. LRSchuss.Add(New TrippleInt(4, 5, 6))
    16. LRSchuss.Add(New TrippleInt(7, 8, 9))
    17. MessageBox.Show(LRSchuss(1).i2.ToString)
    18. End Sub
    19. End Class
    Und:
    Wozu brauchst Du eine MaskedTextBox, wenn da bloß Integers drin stehen?
    Geht da nicht auch ein NumericOpDown?
    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!
    aber was ist jetzt da einfacher oder besser wie bei meiner Variante?
    NumericUpDown find ich nicht gut für meinen Einsatz. Meine Kollegen sollen da bis zu 8stellige Zahlen eintippen - und eintippen geht einfacher wie über UpDown. Man kann auch direkt eintippen, aber dann seh ich den Vorteil nicht mehr.
    Du kannst beim NumericUpDown auch tippen oO
    Und zwar NUR zahlen... Kannst da mitgeben wieviele Dezimalstellen erlaubt sind und wie die größte und kleinste Zahl sein soll.
    Wenn du mit Zahlen arbeitest... Nimm nen NumericUpDown...

    Beispiel aus der Praxis:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D

    tina83 schrieb:

    was ist jetzt da einfacher oder besser wie bei meiner Variante?
    Das ist eine andere Lösung für Dein Problem.
    Deine Ursprüngliche Frage war die nach dem Auslesen, die hab ich Dir perfekt beantwortet.
    Und
    Bei mir kommen nur NumericUpDowns zum einsatz, wenn Zahlen vorgegeben werden müssen.
    Was, wenn Dein Kollege versehentlich "Roullade mit Klößen" eintippt?
    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!
    @sonne75:
    Blöde Frage... Arbeite eher nie mit Bytes... aber

    VB.NET-Quellcode

    1. Dim i As Integer
    2. Dim b As Byte = 30
    3. i = b


    geht doch oO
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D

    MemoAnMichSelbst schrieb:

    geht doch

    Und jetzt versuch es mal umgekehrt ;)

    Wenn eine Funktion etwas anderes als Integer als Übergabeparameter erwartet, dann nimmt sie kein Integer. Und häufig werden schon Zahlen als Integer in die Rechnung reingekommen, somit wird alles wieder umgeschmießen. Oder halt bestimmte Operatoren, da kommt Integer raus, weil fast die ganze Rechnung im .NET auf Integer ausgelegt ist (plus Double halt).
    Alleine Integer gegen UInteger, musst du casten (und wenn nicht immer, dann fliegt es dir mal um die Ohren, wenn Zahl lang genug ist).