はい!裏技を使って!
最初に新しい型を宣言します。レコードは少し使いやすいので、クラスの代わりにレコード タイプを使用します。
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;
レコードタイプを定義したら、次のコードを実装する必要があります。
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;
宣言された型で、それを使い始めることができます:
var
Arr: TMyArray;
begin
Arr := TMyArray.Create(2, 10);
Arr[2] := 10;
実際には、特定の範囲で配列を作成するのは簡単なトリックであり、必要に応じてより柔軟にすることができます。またはクラスに変換します。個人的には、このような単純なタイプのレコードが好きです。