Browse DevX
Sign up for e-mail newsletters from DevX

Tip of the Day
Language: Visual Basic
Expertise: Intermediate
Aug 26, 1999



Building the Right Environment to Support AI, Machine Learning and Deep Learning

Use UDTs for Irregular Arrays

If you use variable-length strings and/or dynamic arrays in a user-defined type (UDT), the actual data does not become part of the structure. Instead, four-byte pointers are stored in the structure, and the actual data is stored separately. Therefore, it doesn't matter if the strings and/or arrays in variables A and B are different sizes; the type size is the same, assuming A and B are of the same UDT.

It also means that if you create an array with a UDT that itself includes dynamic arrays, any "inside" array inside one element of the "outside" array is physically distinct from the corresponding "inside" array of any other "outside" array element. Therefore, code along these lines is perfectly fine:

Type AnotherType
	Something As Integer
	SomethingElse As Long
End Type

Type SomeType
	Something As Integer
	InsideArr() As AnotherType
	SomethingElse As Long
End Type

Sub Test()
	'   set up outside array
	ReDim OutsideArr(1 To 4) As SomeType
	'   set up inside arrays
	ReDim OutsideArr(1).InsideArr(1 To 3)
	ReDim OutsideArr(2).InsideArr(1 To 7)
	ReDim OutsideArr(3).InsideArr(-4 To 0)
	ReDim OutsideArr(4).InsideArr(1 To 3, 2 To 14)
End Sub

You can use this code to create psuedo-multidimensional, nonrectangular arrays, or arrays in which more than one dimension is resized using ReDim Preserve. Both are impossible with ordinary multidimmed arrays.

Robert Alan
Comment and Contribute






(Maximum characters: 1200). You have 1200 characters left.



Thanks for your registration, follow us on our social networks to keep up-to-date