none
Array mit Werten füttern und auslesen RRS feed

  • Frage

  • Hallo,

    programmiere jetzt schon einige Zeit mit Visual Basic, aber mit den Arrays habe ich noch nicht ganz gecheckt.

    Ich bastele gerade an einer eigentlich sinnlosen Forms-Anwendung, möchte aber meine Fähigkeiten damit ein wenig trainieren. Und zwar möchte ich ein Dropdown-Menü haben, dass erst nach Knopfdruck sichtbar wird:

    Sub Form1_Load (ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Me.Dropdown.hide
    End Sub
    
    Sub ShowButton_Click
    Me.Dropdown.Show
    End Sub

    und das soll mit den Werten aus dem Array gefüttert werden.

    Dropdown-Menü mit Werten füttern, geht klar:

    Sub Form1_Load (ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Me.Dropdown.Items.add ("blablabla")<br/>
    End Sub
    

    Aber Die Werte sollen ja aus dem Array kommen.

    Und zudem brauche ich eine Variable, die immer die Anzahl der Elementa im Array enthält, weil ich die Anzahl der Elemente für einen Zufallsgenerator Brauche, so stelle ich mir das vor:

    Dim Generator as New Random
    Dim Array_Werte as Integer
    Dim Zufall as Integer
    
    Zufall = Generator.Next (1, x) 'bei x sollte dann die Anzahl der Elemente im Array stehen
    
    

    Die Anzahl der Elemente im Array weiß das Programm vorher noch nicht, weil diese vom User definiert werden (nächster Punkt). Da bräuchte ich auch noch einen entsprechende Prozedur, die nach einem Knopfdruck den in einem Textfeld stehenden Wert dem Array hinzufügt und den Index vom Array um 1 erweitert.

    Dim Array as Array
    
    Sub Ausgedachter-Button_Click
    Array = Array + Entertxt.text 'Geht natürlich nicht, hier sollte jetzt der im Textfeld Entertxt stehende Wert dem Array hinzugefügt werden
    End Sub
    

    Und dann würde ich am Liebsten die Elemente des Arrays durchnummerieren, sodass ich einfach eine Sub habe, die den der Zufallszahl zugehörigen Wert aus dem Array zieht. Und damit die Werte im Array nach dem Schließen des Programms erhalten bleiben, würde ich letztere gerne sichern (edentweder TXT-Datei oder Dauerhafte Private Variable oder so)

    So, wenn irgendjemand mir da weiterhelfen könnte, fände ich das gut.

    TIA, Lukas

    Mittwoch, 8. Dezember 2010 18:15

Antworten

  • Hallo Lukas,

    Arrays finden direkt nur selten Verwendung, im allgemeinen verwendet man dafür Auflistungen .
    Denn sie sind in ihrer Größe fest und ein permanente Anpassung wie sie Visual Basic mit Redim erlaubt,
    ist relativ ineffizient. Eine Auflistung erledigt das im Hintergrund.

    Für Dein Beispiel wäre eine List(Of Integer) hinreichend.
    Um die Anzahl durch den Anwender vorgeben zu lassen,
    könntest Du ein NumericUpDown-Steuerlement verwenden

    Die Zufallszahlen könntest Du dann erzeugen mit:

      Private Function Zufallszahlen() As List(Of Integer)
        Dim generator As New Random
        Dim anzahl = CInt(Me.NumericUpDown1.Value) ' Anzahl aus einem NumericUpDown Steuerlement
    
        Dim liste As New List(Of Integer)(anzahl)
        For index = 1 To anzahl
          liste.Add(generator.Next(1, anzahl))
        Next
        Return liste
      End Function
    
    Gruß Elmar

    Donnerstag, 9. Dezember 2010 09:59
    Beantworter

Alle Antworten

  • Hallo,

    programmiere jetzt schon einige Zeit mit Visual Basic, aber mit den Arrays habe ich noch nicht ganz gecheckt.

    Ich bastele gerade an einer eigentlich sinnlosen Forms-Anwendung, möchte aber meine Fähigkeiten damit ein wenig trainieren. Und zwar möchte ich ein Dropdown-Menü haben, dass erst nach Knopfdruck sichtbar wird:

    Sub Form1_Load (ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Me.Dropdown.hide
    End Sub

    Sub ShowButton_Click
    Me.Dropdown.Show
    End Sub

    und das soll mit den Werten aus dem Array gefüttert werden.

    Dropdown-Menü mit Werten füttern, geht klar:

    Sub Form1_Load (ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load<br/>
    Me.Dropdown.Items.add ("blablabla")<br/>
    End Sub
    

    Aber Die Werte sollen ja aus dem Array kommen.

    Und zudem brauche ich eine Variable, die immer die Anzahl der Elementa im Array enthält, weil ich die Anzahl der Elemente für einen Zufallsgenerator Brauche, so stelle ich mir das vor:

    Dim Generator as New Random<br/>
    Dim Array_Werte as Integer<br/>
    Dim Zufall as Integer<br/>
    <br/>
    Zufall = Generator.Next (1, x) 'bei x sollte dann die Anzahl der Elemente im Array stehen<br/>
    
    

    Die Anzahl der Elemente im Array weiß das Programm vorher noch nicht, weil diese vom User definiert werden (nächster Punkt). Da bräuchte ich auch noch einen entsprechende Prozedur, die nach einem Knopfdruck den in einem Textfeld stehenden Wert dem Array hinzufügt und den Index vom Array um 1 erweitert.

    Dim Array as Array<br/>
    <br/>
    Sub Ausgedachter-Button_Click<br/>
    Array = Array + Entertxt.text 'Geht natürlich nicht, hier sollte jetzt der im Textfeld Entertxt stehende Wert dem Array hinzugefügt werden<br/>
    End Sub
    

    Und dann würde ich am Liebsten die Elemente des Arrays durchnummerieren, sodass ich einfach eine Sub habe, die den der Zufallszahl zugehörigen Wert aus dem Array zieht. Und damit die Werte im Array nach dem Schließen des Programms erhalten bleiben, würde ich letztere gerne sichern (edentweder TXT-Datei oder Dauerhafte Private Variable oder so)

    So, wenn irgendjemand mir da weiterhelfen könnte, fände ich das gut.

    TIA, Lukas

    Mittwoch, 8. Dezember 2010 18:16
  • Hallo LukeLR,

    schau mal hier bei den Grundlagenvideos.

    http://ecn.channel9.msdn.com/o9/ch9/0669/570669/ExpressGrundlagen08_ch9.wmv


    Liebe Grüße Stefan | Cheers Stefan I'm using VB 2008 Express
    Mittwoch, 8. Dezember 2010 18:23
  • Hallo Lukas,

    Arrays finden direkt nur selten Verwendung, im allgemeinen verwendet man dafür Auflistungen .
    Denn sie sind in ihrer Größe fest und ein permanente Anpassung wie sie Visual Basic mit Redim erlaubt,
    ist relativ ineffizient. Eine Auflistung erledigt das im Hintergrund.

    Für Dein Beispiel wäre eine List(Of Integer) hinreichend.
    Um die Anzahl durch den Anwender vorgeben zu lassen,
    könntest Du ein NumericUpDown-Steuerlement verwenden

    Die Zufallszahlen könntest Du dann erzeugen mit:

      Private Function Zufallszahlen() As List(Of Integer)
        Dim generator As New Random
        Dim anzahl = CInt(Me.NumericUpDown1.Value) ' Anzahl aus einem NumericUpDown Steuerlement
    
        Dim liste As New List(Of Integer)(anzahl)
        For index = 1 To anzahl
          liste.Add(generator.Next(1, anzahl))
        Next
        Return liste
      End Function
    
    Gruß Elmar

    Donnerstag, 9. Dezember 2010 09:59
    Beantworter
  • Hallo LukeLR,

    warum die gleiche Frage in zwei deutschsprachichen Foren?

    http://social.msdn.microsoft.com/Forums/de-DE/vbasicexpresseditionde/thread/54f14f66-1c32-4b9e-bd3d-065704da4da9


    Liebe Grüße Stefan | Cheers Stefan I'm using VB 2008 Express
    Donnerstag, 9. Dezember 2010 21:38
  • Hallo Lukas,

    ich habe Deine Frage im Visual Basic Express Forum hier zusammengeführt, da es kontraproduktiv ist die gleiche Frage über mehrere Unterforen zu verteilen.


    Thorsten Dörfler
    Microsoft MVP Visual Basic
    vb-faq.de
    Freitag, 10. Dezember 2010 06:00
    Moderator
  • Achso, dan hatte der die Frage doch erstellt. Ich hatte gedacht, da wäre ein Fehler gewesen und der hätte die irgendwie nicht erstellt... Sorry. Keine Absicht.
    Sonntag, 12. Dezember 2010 15:01