Du definierst
Im Eingangspost schriebst Du
gS[FlagFound] := gS[Item];
Das bedeutet meiner Meinung nach, dass Du zwei Elemente des TNegativeArray gS vertauschen möchtest.
Stimmt das, oder bin ich gerade auf dem Holzweg?
TNegativeArray enthält doch (glaub' ich) 1 bis n Elemente der Klasse TSprite.
Oder ist es andersherum, dass TSprite eine Array ist, dass Elemente der Klasse TNegativeArray enthält?