>>969
× CompareTime(StartTime, Time)
○ CompareTime(Time, StartTime)

かな?
あと、iが23のとき、EncodeTime(i+1, 0, 0, 0); で例外が出るような。

またBCBで申し訳ないですが、
日付をまたぐ場合にも対応すると、

TDateTime dtStart = StrToTime("23:00:00");
TDateTime dtEnd = StrToTime("1:00:00");
TDateTime dtCurr = Time();

if (dtEnd < dtStart)
{
  if (dtCurr < dtEnd)
    dtCurr++;

  dtEnd++;
}

if (dtCurr >= dtStart && dtCurr <= dtEnd)
  Caption = "内";
else
  Caption = "外";

です。