Dynamisk matris

Matris Collections eller objektmängder

Ibland vet man inte på förhand hur stor matrisen skall vara när man kör programmet. Kanske användaren själv skall ange ett antal av någonting och då skall matrisen dimensioneras utifrån det antalet. Då används en dynamisk matris som dimensioneras under programkörningen.

En del måste man förbereda med kod för att det skall fungera. Specificera först namnet och typen på matrisen, men utelämna antalet element i parentesen.

Dim Varor() As String

Skriv koden där användaren bestämmer antalet element och där antalet i matrisen läggs till under programkörningen.

Dim Antal As Integer
Antal = InputBox("Ange antalet varor")

Därefter kommer koden som skapar en matris utifrån antalet som angavs.

ReDim Varor(Antal-1)

Anledningen till att man använder Antal - 1 ärr att matrisen börjar på noll.

Har vi nu till exempel en For Next-slinga inne i programmet används funktionen UBound som vi lärde oss i en tidigare lektion. UBound hittar själv antalet element i en matris.

Ett exempel: En slinga som lägger det som står i en ListBox till matrisen och sedan från matrisen till en annan ListBox:

Dim Varor() As String
Dim Antal,i As Integer
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Antal = InputBox("Ange antalet varor")
ReDim Varor(Antal - 1)

For i = 0 To UBound(Varor)
   Varor(i) = ListBox1.Items(i)
   ListBox2.Items.Add(Varor(i))
Next i
End Sub

OBS!

Om en matris som innehåller data omdimensioneras försvinner alla data. Antag att vår matris Varor har fått sina data men att det måste läggas till ytterligare data. Då kan vi använda ordet Preserve efter ReDim

ReDim Preserve Varor()

Nu kommer de data som redan fanns i matrisen Varor att finnas kvar och nya kan läggas till.

Matris Collections eller objektmängder

SupportData.Net
©