[Gelöst] TList.Sort sortiert nicht

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

Ratchet

Betreff: [Gelöst] TList.Sort sortiert nicht

BeitragSo, Feb 21, 2010 2:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich bin wohl grad blind und sehe den Fehler einfach nicht. Ich habe einen einfachen Typen mit einer eigenen Compare Methode zum sortieren. Wenn ich es mir im Debugger ansehe scheint alles wunderbar zu funktionieren. Aber die Reihenfolge der List bleibt gleich (siehe Ausgabe auf der Konsole). Dabei habe ich es schon mal so gemacht und im anderen Projekt funktioniert es. Ich glaub es ist schon zu spät Very Happy helft mir mal eben bitte auf die Sprünge Confused

BlitzMax: [AUSKLAPPEN]
SuperStrict

Type TMyType
Field SortByThis: Int

Method New()
SortByThis = Rand(3)
End Method

'Eigene Compare Methode welche beim Sort der Liste auch aufgerufen wird
Method Compare: Int(p: Object)
Local Ob: TMyType
Local Result: Int = False

Ob = TMyType(p)
If Ob Then
Result = (SortByThis > Ob.SortByThis)
End If
Return Result
End Method
End Type

Global List: TList = New TList

'Ein paar Objekte erzeugen
List.AddLast(New TMyType)
List.AddLast(New TMyType)
List.AddLast(New TMyType)

'Die Objekte Ausgaben
For Local x: TMyType = EachIn List
Print x.SortByThis
Next

'Jetzt sortieren wir das ganze absteigend
Print("-------------")
List.Sort(False)

'Und noch mal ausgeben
For Local x: TMyType = EachIn List
Print x.SortByThis
Next
[iMac 27"] [3,4GHz Intel Core i5 ] [8GB Ram] [NVIDIA GeForce GTX 775M 2GB] [MacOS X Yosemite] [BlitzMax + MaxGui] [Monkey X Pro]
  • Zuletzt bearbeitet von Ratchet am So, Feb 21, 2010 9:07, insgesamt 2-mal bearbeitet

Midimaster

BeitragSo, Feb 21, 2010 3:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich denke, der Fehler liegt in der Zeile

BlitzMax: [AUSKLAPPEN]
Result = (SortByThis > Ob.SortByThis)

die liefert so nur TRUE oder FALSE. Erwartet wird aber -1 oder +1

Probier doch mal das:

BlitzMax: [AUSKLAPPEN]
Result = (SortByThis - Ob.SortByThis)

FireballFlame

BeitragSo, Feb 21, 2010 5:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Midimaster hat Folgendes geschrieben:
die liefert so nur TRUE oder FALSE. Erwartet wird aber -1 oder +1

Oder 0 bei Gleichheit.
PC: Intel Core i7 @ 4x2.93GHz | 6 GB RAM | Nvidia GeForce GT 440 | Desktop 2x1280x1024px | Windows 7 Professional 64bit
Laptop: Intel Core i7 @ 4x2.00GHz | 8 GB RAM | Nvidia GeForce GT 540M | Desktop 1366x768px | Windows 7 Home Premium 64bit

Ratchet

BeitragSo, Feb 21, 2010 9:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja das war es. Vielen Dank. Dann hat es wohl in meinem anderen Projekt immer nur zufällig gepasst Very Happy
[iMac 27"] [3,4GHz Intel Core i5 ] [8GB Ram] [NVIDIA GeForce GTX 775M 2GB] [MacOS X Yosemite] [BlitzMax + MaxGui] [Monkey X Pro]

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group