Здесь включены 2 вспомогательные функции, необходимые для работы вашей функции. Одна проверяет високосный год, другая возвращает число дней месяца (с проверкой високосного года), третья, ту, что вы хотели, возвращает текущую неделю года.
{***************************************************************************} function kcIsLeapYear( nYear: Integer ): Boolean; begin
Result := (nYear mod 4 = 0) and ((nYear mod 100 <> 0) or (nYear mod400 = 0)); end;
{***************************************************************************} function kcMonthDays( nMonth, nYear: Integer ): Integer; const
DaysPerMonth: array[1..12] of Integer = (31, 28, 31, 30, 31, 30, 31,31, 30, 31, 30, 31); begin
Result := DaysPerMonth[nMonth]; if (nMonth = 2) and kcIsLeapYear(nYear) then Inc(Result);end;
{***************************************************************************} function kcWeekOfYear( dDate: TDateTime ): Integer; var