Sandro Bizioli


Chi sogna di giorno conosce molte cose che sfuggono a chi sogna soltanto di notte. (E.A.Poe)
Mappa

Array multidimensionali in VB6

Ancora qualche precisazione sull'utilizzo degli array in VB6.
Nel post precedente abbiamo visto come era possibile impostare gli indici inferiori e superiori di un array e come fosse possibile recuperarne le informazioni attraverso le funzioni Lbound e Ubound.

Proseguiamo con altre precisazioni.
Atrraverso l'istruzione ReDim è possibile riallocare lo spazio di memorizzazione per un array dinamico, ma solo se questo è stato dichiarato senza dimensioni.
Es.
Dim myArray() As Integer
ReDim myArray(0 To 9)

L'istruzione ReDim Preserve permette di riallocare lo spazio mantenendo gli eventuali valori già assegnati.
Es.
Dim myArray() As Integer
   ReDim myArray(0 To 1)
   myArray(0) = 10
   myArray(1) = 20
   ReDim Preserve myArray(0 To 2)
   myArray(2) = 30
 
   Debug.Print myArray(0), myArray(1), myArray(2) '
   ' Verrà stampato
  
 10  20  30

E' possibile creare array multidimensionale semplicemente separando le varie dimensioni con la virgola.

Es.
Dim myArray() As Integer
   ReDim myArray(0 To 1, 0 To 1)
   myArray(0, 0) = 10
   myArray(0, 1) = 11
   myArray(1, 0) = 20
   myArray(1, 1) = 21
   myArray(2, 0) = 30
   myArray(2, 1) = 31

In questo caso, però, sarà possibile utilizzare la funzione ReDim Preserve solo per ridimensionale l'ultima dimensione dell'array e non sarà possibile variare il numero di dimensioni.

Es.
Dim myArray() As Integer
   ReDim myArray(0 To 1, 0 To 1)
   ReDim Preserve myArray(0 To 1, 0 To 2) ' Non genera errore
   ReDim Preserve myArray(0 To 2, 0 To 1) ' Genera errore - Subscript out of range
   ReDim Preserve myArray(1 to 1, 0 to 1) ' Genera errore - Subscript out of range

Le funzioni Lbound e Ubound sono ancora utilizzabili e ci permetteranno di recuperare l'indice inferiore o superiore di ogni singola dimensione dell'array, specificando, dopo il riferimento all'array, la dimensione interessata.

Es.
Dim myArray() As Integer
Redim myArray(1 to 2, 0 to 4)

' Indice inferiore della prima dimensione (1)
Debug.Print(LBound(myArray, 1))
' Indice superiore della seconda dimensione (4)
Debug.Print(UBound(myArray, 2))

Categoria: VB6
mercoledì, 25 lug 2007 Ore. 15.20
Statistiche
  • Views Home Page: 110.834
  • Views Posts: 565.014
  • Views Gallerie: 113.519
  • n° Posts: 227
  • n° Commenti: 222
Copyright © 2002-2007 - Blogs 2.0
dotNetHell.it | Home Page Blogs
ASP.NET 2.0 Windows 2003