2 Objekte in TList vertauschen

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

Thunder

Betreff: 2 Objekte in TList vertauschen

BeitragDo, Mai 06, 2010 18:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

Ich habe eine kurze Frage, da ich vor dem Problem stehe, dass ich 2 Objekte in einer TList vertauschen muss - am besten innerhalb einer Methode eines dieser Types.
Früher habe ich das immer so gemacht:

BlitzMax: [AUSKLAPPEN]
Type Dummy
Field x,y,w,h
Method SwapWith(d:Dummy)
Local x,y,w,h
x=d.x
y=d.y
w=d.w
h=d.h
d.x=Self.x
d.y=Self.y
d.w=Self.w
d.h=Self.h
Self.x=x
Self.y=y
Self.w=w
Self.h=h
EndMethod
EndType


Allerdings wird das bei großen Types lang und die Wartbarkeit leidet auch.
Gibt es eine bessere Lösung?


mfg Thunder
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit

mpmxyz

BeitragDo, Mai 06, 2010 18:51
Antworten mit Zitat
Benutzer-Profile anzeigen
In BlitzMax kann man netterweise - von mancher Sprache lässt sich das leider nicht sagen - direkt auf die Listeneinträge zugreifen und entsprechend Einträge einfügen und löschen.
BlitzMax: [AUSKLAPPEN]
Type Dummy
Global List:TList=New TList
Field Link:TLink

Method New()
Link=List.AddLast(Self)
EndMethod

Method SwapWith(d:Dummy)
Local NewLink:TLink=List.InsertAfterLink(d.Link)
d.Link.Remove()
d.Link=List.InsertAfterLink(Self.Link)
Self.Link.Remove()
Self.Link=NewLink
EndMethod
EndType

mfG
mpmxyz
Edit: Der spontane Code ist aber lahm. Razz (in der Liste suchen...)
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer
  • Zuletzt bearbeitet von mpmxyz am Do, Mai 06, 2010 19:02, insgesamt einmal bearbeitet
 

Ava

Gast

BeitragDo, Mai 06, 2010 18:58
Antworten mit Zitat
Oder man ändert einfach die Objektvariablen der TLink-Objekte:

BlitzMax: [AUSKLAPPEN]

Function ListSwap ( List:TList, Obj1:Object, Obj2:Object )

Local Link1:TLink = List.FindLink ( Obj1 )
Local Link2:TLink = List.FindLink ( Obj2 )

Link1._value = Obj2
Link2._value = Obj1

EndFunction

( spontaner Code, nicht direkt getestet ^^ )

Thunder

BeitragDo, Mai 06, 2010 19:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke sehr.
(@Ava: Spontaner Code funktioniert Very Happy)


mfg Thunder
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit
 

Ava

Gast

BeitragDo, Mai 06, 2010 19:02
Antworten mit Zitat
Super! Very Happy

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group