How to get an array size

Blitz3D Forums/Blitz3D Programming/How to get an array size

Do you know how i can get an array size? I tried to make some routine, but as soon as i reach the last value in the array the program stops saying `array index out of bounds`..

The only way to do this is to store the array size in a variable, when you dimension it. Or, you could use a bank, instead. You can then use the BankSize command to get it's size.

Is faster using arrays or banks, to store custom types collections?

Theoretically, arrays are faster. Plus, you can't use banks for types, unless you use the Handle/Object commands, which will make things a bit slower again.

However, array/bank access speed is unlikely to be your main bottleneck. :)

i use handles.
thanks.

how can i get the last unused 4 bytes in a bank? with a for-next?

I used this code. Please tell me if you find an error.

Global b% = CreateBank(16)
PokeInt b, 0, 1111
PokeInt b, 4, 2222
PokeInt b, 8, 3333

Global i% = 0, start%, finish%, bytes%
.start
If PeekInt(b, i) <> 0
	i = i + 4
	Goto start
Else
	bytes = i/4
	Goto finish
EndIf
.finish

Print bytes
WaitKey()
End


It gives me the first unused int.

You mean something like this?
free_pos = -1

For i = 0 To (BankSize(bank)-1) Step 4
    If PeekInt(bank,i) = 0
        free_pos = i
        Exit
    EndIf
Next

If free_pos = -1
    ; Bank has no free position. Handle that here.
EndIf


exactly.

Look into my Container Classes for an alternative - my Vector Container in specific emulates an Array of Handles to objects using a bank. It keeps track of the number of elements in the "array" and can preallocate space for more separately. Maybe you don't have to reinvent the wheel! ;)