Wenn zwei Objekte im Array vertauscht werden sollen, dann müsste es eigentlich folgendermaßen funktionieren:
Delphi-Quellcode:
function Swap(gs:TNegativArray; Index1, Index2:integer);
var
lTemp: TObject;
begin
lTemp:=gs[Index1];
gs[Index1]:=gs[Index2];
gs[Index2]:=lTemp;
end;
Sehe ich auch so. Damit werden aber streng genommen die Instanzen ausgetauscht und nicht der Inhalt der beiden Instanzen. Ob das so gewollt ist oder nicht entzieht sich unserer Kenntnis.
Ich würde diese Methode auch direkt in der Klasse
TNegativArray implementieren - zwecks Konsistenz mit
TList aber unter dem Namen
Exchange:
Delphi-Quellcode:
TNegativeArray = class(TObject)
private
Fdata : array of TSprite;
FMaxValue: Integer;
function getData(index : Integer) : TSprite; inline;
procedure setData(index : Integer; aData : TSprite); inline;
function GetMaxValue: Integer;
procedure SetMaxValue(const Value: Integer);
public
Constructor Create(aLenght : Integer);
Destructor Destroy; override;
procedure Exchange(Index1, Index2: Integer);
property Data[index: Integer]: TSprite read getData write setData; default;
property MaxValue: Integer read GetMaxValue write SetMaxValue;
end;
...
procedure TNegativeArray.Exchange(Index1, Index2: Integer);
var
lTemp: TSprite;
begin
lTemp := Data[Index1];
Data[Index1] := Data[Index2];
Data[Index2] := lTemp;
end;