SÍ! ¡Usando un truco!
Primero declare un nuevo tipo. Utilizo un tipo de registro en lugar de una clase, ya que los registros son un poco más fáciles de usar.
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 la RecordType definido, ahora tiene que aplicar un poco de código:
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 el tipo declarado, ahora puede empezar a utilizarlo:
var
Arr: TMyArray;
begin
Arr := TMyArray.Create(2, 10);
Arr[2] := 10;
Es en realidad es un truco simple para crear arreglos con un rango específico y puede hacerlo más flexible si lo desea. O conviértalo en una clase. Personalmente, prefiero los registros para este tipo de tipos simples.