u pitanju je dinamicki niz bilo kog tipa, razlog zbog koga sam napisao ovaj makro je sto je u UDT-u (user defined type, ili Type) moguce definisati samo staticke nizove kao clanove strukture.
fajl (dynarray.bas) je okacen uz poruku a evo kako se koristi:
#Include "dynarray.bas"
DefineDynamicArrayType(Integer)
Function PrintArray(ByRef Index As UInteger, Value As Integer) As Integer
print "["; Index; "] = "; Value
End Function
Dim a As IntegerArray
a.add 12
a.add 46
a.add 123
a.iterate @PrintArray
a.remove 2
a.iterate @PrintArray
sleep
sto ce kao rezultat dati:
[0] = 12
[1] = 46
[2] = 123
[0] = 12
[1] = 46
novi tip uvodite sa DefineDynamicArrayType(<Tip Niza>) cime dobijate <Tip Niza>Array tip koji ima sledece metode/propertije:
Declare Function Add(Value As _TYPE_) As _TYPE_ Pointer
Declare Function Add As _TYPE_ Pointer
Declare Sub Remove(Index As UInteger)
Declare Sub ReDim(newSize As UInteger, preserveValues As Integer = 0)
Declare Property Item(Index As UInteger) As _TYPE_
Declare Property Item(Index As UInteger, Value As _TYPE_)
Declare Function PeekAt(Index As UInteger) As _TYPE_ Pointer
Declare Property ItemCount As UInteger
Declare Sub Iterate(iterator As _TYPE_##ArrayIterator, safe As Integer = Not 0)
ExpandFactor As UInteger = 10 ' for how much items is array expanded when needed
za svaki clan strukture imate objasnjenje sta ta metoda/svojstvo radi (u dynarray.bas)
[Ovu poruku je menjao Aleksandar Ružičić dana 11.03.2008. u 04:05 GMT+1]