Embarcadero Discussion Forumsですばらしい回答がありましたので、メモしておきます。
Delphiでは配列のインデックスは0以外から始めることができます。
うまく使いたいものです。
範囲には意味のわかる名前をつける。
たとえば、月は範囲が1~12までの配列に保持するとします。
このとき範囲に名前をつけます。
type
TMonths = 1..12
配列の範囲は部分範囲型で定義する
変数を定義するときは、この範囲名を使用します。
var
months: array [TMonths] of string;
範囲を取得するときはLow関数とHigh関数を使用する
範囲を直接入力せず、Low関数とHigh関数を使用します。
そうすることで、範囲が変更されても、プログラムを変更しなくてすみます。
for I := Low(months) to High(months) do
begin
DoSomething(months[I]);
end;