Appending Arrays

BlitzMax Forums/BlitzMax Beginners Area/Appending Arrays

TwoCorin517(Posted 2008) [#1]
Is there a way to append to arrays without wiping the array clean?

Basically doing what: Array:String = new String[NewNumElements] does, without wiping the array.

I've tried Array = Array[..NewNumElements] But it doesn't seem to be working.


Dreamora(Posted 2008) [#2]
you don't have an array so how should it work?

It would need to be

someStringArray:string[] = ...

cause thats all that was wrong


Gabriel(Posted 2008) [#3]
Do you just want to append new entries to an existing array or do you want to concatenate (join) two arrays, one on the end of the other? There was a recent update which allowed array concatenation, I think.


Global A:String[]=["One","Two","Three"]
Global B:String[]=["Four","Five","Six"]
Global C:String[]=A+B

For Local I:Int=0 To 5
	Print C[I]
Next



TwoCorin517(Posted 2008) [#4]
Dreamora, I'm not sure what you mean. The first example:
Array:String = new String[NewNumElements]
works. The full code would be:
Local Array:String[30]
Local NewNumElements:Int = 20
Array:String = New String[NewNumElements]


Gabriel: Appending new entries, not concatenation.

The original code was:
	Method AddFunction(FunctionName:String) 
		NumFunctions:+1
		Functions = Functions[..NumFunctions] 
		Functions[NumFunctions - 1].Create("Function", FunctionName) 
	End Method

But its giving me a accessing null field error.


GfK(Posted 2008) [#5]
Appending new entries, not concatenation
Can you explain the difference?

As far as I can see, he's exactly answered your question.


TwoCorin517(Posted 2008) [#6]
GFK: I guess I was a bit hasty in my assumption there. I want to add a blank field to the existing array rather than concatenating two different arrays together.

Edit:
Tried Concoctenation:
	Method AddFunction(FunctionName:String) 
		Local TempArray_A:TCode[] = Functions
		NumFunctions:+1
		Local TempArray_B:TCode[] = New TCode[NumFunctions] 
		Local TempArray_C:TCode[] = TempArray_A + TempArray_B
		Functions = TempArray_C
		Functions[NumFunctions - 1].Create("Function", FunctionName) 
	End Method

same problem as before.


Dreamora(Posted 2008) [#7]
then your code is just wrong, point

SuperStrict

Global Functions :String[30]
Global NumFunctions:Int = 20
Functions = New String[NumFunctions] 

addfunction("test")
addfunction("gaga")
addfunction("i just did it wrong again!")
Delay 2000

End

Function AddFunction(FunctionName:String) 
		NumFunctions:+1
		Functions = Functions[..NumFunctions] 
		Functions[NumFunctions - 1] = FunctionName
		Print Functions[NumFunctions - 1]
End Function


works without any problems.
Most likely because you put the :string behind it thought it is no :string, its :string[] which is something elementally different (actually a different class! :Array)


tonyg(Posted 2008) [#8]
I want to add a blank field to the existing array

array=array[..len(array)+1]
Local array:String[]=["one","two","three"]
Local len1:Int=Len(array)
array=array[..len1+1]
Local len2:Int=Len(array)
Print len1 + " " + len2
array[3]="Four"
For Local all:String=EachIn array 
	Print all
Next