EDIT: Should have looked at the above example a bit harder, as it has the Compare() Method in there!
There's a Compare() Method that you can build into your Types that Blitz will use to sort your type with the Sort() Method. Once you have the Compare() Method as part of your Type you can use yourList.Sort() to sort it.
This Compare() Method compares an object passed to it with the current one. You can then use whatever you want to decide which is the higher/lower of the two.
Here's an example.
Strict
Type TPerson
Field name:String
Global nameList:TList
Function Create(p:String)
If nameList=Null Then nameList=CreateList()
Local newPerson:TPerson=New TPerson
nameList.AddLast(newPerson)
newPerson.name=p
EndFunction
Function ShowList()
For Local i:TPerson=EachIn nameList
Print " "+i.name
Next
EndFunction
Method Compare:Int(p:Object)
Local n:TPerson=TPerson(p)
If n Then
If name.ToUpper() < n.name.ToUpper() Then
Return -1
ElseIf name.ToUpper() > n.name.ToUpper() Then
Return 1
Else
Return 0
EndIf
Else
Return 0
EndIf
EndMethod
EndType
RestoreData nameData
Local n:String
For Local i:Int=0 To 4
ReadData n
TPerson.Create(n)
Next
Print
Print "Before sorting..."
TPerson.ShowList
Print
Print "After sorting..."
TPerson.nameList.Sort
TPerson.ShowList
#nameData
DefData "Jay","Lisa","Shona","Mum","dad"
Sorry there's no comments, as it was just a quick program I put together to try and get my head around it. Hope it helps though.
|