Dynamic Resizing

BlitzMax Forums/BlitzMax Beginners Area/Dynamic Resizing

The forum is locked. These are the original blitzbasic.com forums, kept so they can still be read. No new topics, replies or edits can be made here. To join in, head over to the Blitz3D+ forums.

A complete example (expanding on my previous code):
Type ObjectData
	Field indexdata:indices[]
End Type

Type Indices
	Field indices:Int[]
End Type

SeedRnd(MilliSecs())

' Create a new object of type ObjectData
Local objectpointer:ObjectData = New ObjectData
' Resize the array "indexdata" to let it have 10 indexes (0..9)
objectpointer.indexdata = objectpointer.indexdata[..10]



' Create new "indices" objects at all indexes of the array "indexdata"
For i = 0 To 9
	objectpointer.indexdata[i] = New indices
Next



' Resize array "indices" for all "indices"-type-instances and set a random number for all of them
For i = 0 To (objectpointer.indexdata.length - 1)
	' Resize the array "indices" at each index of array "indexdata" to a random size between 1 and 10
	objectpointer.indexdata[i].indices = objectpointer.indexdata[i].indices[..Rand(1, 10)]
	' Set a random value from 1 to 100 inside the indices array at each index,
	' which resides inside the "indexdata" array at each index
	For j = 0 To (objectpointer.indexdata[i].indices.length - 1)
		objectpointer.indexdata[i].indices[j] = Rand(1, 100)
	Next
Next



' Print all data
For i = 0 To (objectpointer.indexdata.length - 1)
	For j = 0 To (objectpointer.indexdata[i].indices.length - 1)
		PrintData(objectpointer, i, j)
	Next

	Print
Next



Function PrintData(a:ObjectData, x, y)
	Print "objectpointer.indexdata[" + x + "].indices[" + y + "]: " + a.indexdata[x].indices[y]
End Function