Ich möchte ein Array mit negativ werten anlegen.
Geht es Dir daraum das dass Array tatsächlich negative Indicies unterstützt - das geht nicht - oder nur um den Zugriff darauf?
Du könntest die Indicies entweder mit einer (inline) Funktion mappen oder das Array in eine Klasse / Record packen.
Also ungefähr so :
Delphi-Quellcode:
TYPE irgendwas = (Montag,Dienstag,Mittwoch,Donnerstag,Freitag,Samstag,Sonntag);
TNegativeArray = class(TObject)
private
maxVal : Integer;
fdata : array of irgendwas;
function getData(index : Integer) : irgendwas; inline;
procedure setData(index : Integer; aData : irgendwas); inline;
public
Constructor Create(aLenght : Integer);
Destructor Destroy; override;
property
Data [ index : Integer ] : Irgendwas
read getData write setData; default;
end;
implementation
function TNegativeArray.getData(index : Integer) : irgendwas;
begin
assert(index<=0);
result := fData[abs(index)];
end;
procedure TNegativeArray.setData(index : Integer; aData : irgendwas);
begin
assert(index<=0);
fData[abs(index] := aData;
end;
Vollkommen ungetestest. Zu verwenden wäre das dann so :
Delphi-Quellcode:
var a : TNegativeArray;
begin
a := TNegativeArray.Create(100); // Index läuft von -100 bis 0
a[-1] := Montag;
end;