How can I go through all entries in a type?
BlitzMax Forums/BlitzMax Beginners Area/How can I go through all entries in a type?
| ||
| Hey, I need to manage a big amount of data, and handle it as a database. I thought I could use Type to do that? I remember I did that a few years ago when I used BlitzPlus. I need to go throug all entries in a type, until I find the one I need, so I can extract the data. But I have already hit a wall.. I worked off the Type example found under Modules in MaxIDE. Here it is: Type TVector Field x,y,z End Type Local a:TVector=New TVector a.x=10 a.y=20 a.z=30 For b=EachIn TVector Print b Next After all is created, I try to list all in that Type. Apparantly I cannot use EachIn with Types, which seems odd (I guess..). Or am I using it wrong? How can I go through all? I have looked at the List feature of BMax, but can't quite work out if that can be used to manage databases.. PS. When I list code in these forums, how can I list it so it's smaller and scrollable?? Useful for large code, but don't know how.. |
| ||
That's pretty much what lists are for.Type TVector
Field x,y,z
End Type
Local VectorList:TList = CreateList()
Local a:TVector = New TVEctor
a.x = 10
a.y = 20
a.z = 30
ListAddLast(VectorList,a)
For Local b:TVector = Eachin VectorList
Print b
NextYou can also use an Array as well, if you need a more random access than lists provide.
Local Array:TVector[10]
For Local i:int = 0 to 9
Array[i] = New TVector
Array[i].x = 10
Next
For Local b:TVector = Eachin Array
Print b
Next |
| ||
For larger data sets, a TMap (BRL.Map) is better. Thinking in terms of databases, you define each entry with a unique "key", which you use to store/retrieve your type.
Type TVector
Field x,y,z
Method key:String()
return x + "," + y + "," + z
End Method
End Type
Local map:TMap = new TMap
local a:TVector = new TVector
a.x = 10
map.insert(a.key(), a)
Local b:TVector = TVector(map.ValueForKey("10,0,0"))
Print b.x
Not a great example... Of course if your data set is very large, why not use a proper database? There are in-memory ones like SQLite that are designed for the task. |
| ||
| Just to mention: you can iterate through TMaps as well, either through the keys or the values. |