- 01
 - 02
 - 03
 - 04
 - 05
 - 06
 - 07
 - 08
 - 09
 - 10
 - 11
 - 12
 - 13
 - 14
 - 15
 - 16
 - 17
 - 18
 - 19
 - 20
 - 21
 - 22
 
                        function fnGetWeekDay:integer;
//функция fnGetWeekDay возвращает день недели
var
  CurDate: date;
  dd,mm,yy: word;
  cent, month, iRes : integer;
Begin
  CurDate = CurrentDate;
  DecodeDate(CurDate,yy,mm,dd);
  month = mm;
  if mm < 3 then mm = mm + 10
  else mm = mm - 2;
  if mm > 10 then yy = yy - 1;
  cent = yy div 100;
  yy = yy mod 100;
  iRes = ((2.6*mm-0.2) div 1) + dd + yy + (yy div 4) + (cent div 4) - 2*cent;
  iRes = ((iRes+777) mod 7);
  if (month == 5) or (month == 7) or (month == 10) or (month == 12) then iRes = iRes - 1;
  if iRes == -1 then result = 6
  else if iRes == 0 then result = 7
  else result = iRes;
End; //  fnGetWeekDay
                                     
        
            Это не совсем Delphi. Это нечто с крайне похожим синтаксисом.
Почему нельзя было использовать (CurrentDate - <какое-нибудь воскресенье>) mod 7 я не знаю.