die Funktion ChangeCurrentElement verhält sich nicht so, wie ich es erwarten würde. Zunächst einmal ein Auszug aus meinem Code:
Code: Alles auswählen
; Iterate through all objects and look for the goals
ResetList(*g\Objects())
While NextElement(*g\Objects())
If *g\Objects()\Type = #Goal
; We found a goal, search for a (color mating) box in the goal
*goal.Object = *g\Objects() ; Save current position
; Reset list to iterate through all objects and look for the box
ResetList(*g\Objects())
While NextElement(*g\Objects())
If *g\Objects()\Type = #Box And *g\Objects()\Color = *goal\Color And IsBoxInGoal(*g\Objects(), *goal)
; Match found, search for next goal
numFullGoals = numFullGoals + 1
Break
EndIf
Wend
; Change to prev. position
ChangeCurrentElement(*g\Objects(), *goal) ; <---- Funktioniert nicht
EndIf
Wend
Als Abhilfe habe ich mir nun eine Funktion geschrieben, die gefordertes löst, allerdings nur für Listen vom Typen "Object" funktioniert, was unschön ist. Diese Hilfsfunktion durchläuft die Liste einfach so lange, bis (abstrakt gesehen) *g\Objects() = *goal ist. Das funktioniert auch bisher problemlos.
Meine Frage ist nun, weswegen die offizielle Funktion ChangeCurrentElement nicht meinem erwarteten Verhalten entspricht. Was mache ich falsch?