TList sorting problem...

BlitzMax Forums/BlitzMax Programming/TList sorting problem...

fredborg(Posted 2006) [#1]
Hi,

There seems to be a bug with sorting raw integers in lists.
'
' works with strings
List:TList = CreateList()
List.AddLast("hi")
List.AddLast("i'm")
List.AddLast("ok")
List.Sort()

'
' but not with integers
List:TList = CreateList()
List.AddLast(13)
List.AddLast(10)
List.AddLast(11)
List.Sort()
It seems that the references to integers (and I assume other simple types, ie. float, double, byte etc), are lost during the sorting process.

[edit] Nope, the other types refuse to be converted to an object, so it looks like it only applies to integers.


skidracer(Posted 2006) [#2]
As you are not using Strict and AddLast expects objects the compiler is interpreting your integers as object handles.


fredborg(Posted 2006) [#3]
Hi,

I see, but that brings up another interesting thing:
Strict

'
' but not with integers
Local List:TList = CreateList()
Local temp:Int = 12
List.AddLast(temp)
List.AddLast(Object(temp))
List.Sort()
Is it impossible to store integers in a TList then? Not sure why you would do it, but I guess it could be useful in some cases.


EOF(Posted 2006) [#4]
TLists are for storing objects only. Strings are in fact objects too.

This works though:

SuperStrict

Local List:TList = New TList
List.AddLast String("13")
List.AddLast String("10")
List.AddLast String("11")
List.Sort

For Local l$=EachIn List
	Print Int(l$)
Next



Grey Alien(Posted 2006) [#5]
This seems to crop up regularly. You could also make a TInteger "wrapper" type with a single integer field...

Doc update to make it clear?