Array Sizing
BlitzMax Forums/BlitzMax Beginners Area/Array Sizing| 
 | ||
| I just realized you can only slice one dimensional arrays, so what I'm wondering is how can I size my array to the width/height of my loaded map. Is it possible to declare a global array and then define it's size later? Can you release an existing array and then redim it inside a function? My current method makes a huge array to accommodate any map, and this wastes a lot of memory. Any suggestions welcome. Global Map:Tile[1000, 1000, 2] Function LoadMap() ' I now know map width + height. How can I make a global array of this size now End Function | 
| 
 | ||
| you could use an array of arrays | 
| 
 | ||
| You could use an array of arrays. You can then resize the main array and you can resize all subarrays all independently. 
Global Map$[][]
Function ResizeArray(width, height)
	' Resize the main array (which is used here as the width-index)
	Map = Map[..width]
	' Resize all subarrays (each index of the main array points to a different subarray)
	For i = 0 Until width ' "Until" is used, because you have index "0" to index "width - 1" (0-based arrays)
		Map[i] = Map[i][..height]
	Next
End Function
Function PrintArraySize()
	Print Map.length ' Print the total width of the array ("0" - "width-1")
	Print Map[0].length ' Print the total height of the array ("0" - "height-1")
End Function
ResizeArray(640, 480)
PrintArraySize()
' To put something inside the array at x = 20 and y = 50, do this:
Map[20][50] = "This is arrayindex 20, 50"
Print Map[20][50]
Note that I've used a string-array here, but you can use any type you want (replace "Global Map$" by "Global Map:Tile"). | 
| 
 | ||
| do you mean something like that? Global Map:Tile[,,] Function LoadMap() ' I now know map width + height. How can I make a global array of this size now Map = new Tile[width, height, 2] End Function | 
| 
 | ||
| Thanks for the help everyone. I finally understood the concept thanks to PowerPC's excellent example. Here is the final code incase anyone else needs to size a 3 dimensional array of types. |