SI! Usando un trucco!
Prima dichiarare un nuovo tipo. Io uso un tipo di record invece di una classe poiché i record sono un po 'più facili da usare.
type
TMyArray = record
strict private
FArray: array of Integer;
FMin, FMax:Integer;
function GetItem(Index: Integer): Integer;
procedure SetItem(Index: Integer; const Value: Integer);
public
constructor Create(Min, Max: integer);
property Item[Index: Integer]: Integer read GetItem write SetItem; Default;
property Min: Integer read FMin;
property Max: Integer read FMax;
end;
Con il recordtype definito, è ora necessario per implementare un po 'di codice:
constructor TMyArray.Create(Min, Max: integer);
begin
FMin := Min;
FMax := Max;
SetLength(FArray, Max + 1 - Min);
end;
function TMyArray.GetItem(Index: Integer): Integer;
begin
Result := FArray[Index - FMin];
end;
procedure TMyArray.SetItem(Index: Integer; const Value: Integer);
begin
FArray[Index - FMin] := Value;
end;
Con il tipo dichiarato, è ora possibile iniziare ad usarlo:
var
Arr: TMyArray;
begin
Arr := TMyArray.Create(2, 10);
Arr[2] := 10;
E' in realtà un semplice trucco per creare array con un intervallo specifico e puoi renderlo più flessibile se lo desideri. O convertirlo in una classe. Personalmente, preferisco solo i record per questi tipi di tipi semplici.
fonte
2010-10-27 11:00:36