Страдалец, не совсем так.
Пусть сейчас понедельник, а событие должно произойти в четверг. Вот надо получить дату ближайшего четверга.
Итак. Что мы, как специалисты, делаем.
Мы знаем:
1. Текущую дату
2. День недели события.
Надо:
1. Узнать на какую дату после текущей приходится ближайший "чеверг".
Что используем:
1. Тип TDateTime, где в целой части находится кол-во дней после 1 янв 1900 (если не ошибаюсь) года (не важно, чему соотв. DateTime(0), важно, что там просто кол-во дней).
2. Функцию DayOfWeeek, которая возвращает норме дня недели, где понедельник=1 (есть еще одна, DayOfTheWeek, там первый день - воскресенье. ну если я ничего не попутал, лень в справку лезть).
Итого:
Код:
function GetNextDayOfWeekDate(ADay : Integer);
var
Current : TDateTime;
CurrentDay : Integer;
begin
Current := Date;
CurrentDay := DayOfWeek(Current);
If CurrentDay = ADay // День недели совпадает
Then Result := Current + 7 // или просто Current, если "сегодня" годится
Else
If CurrentDay > ADay
Then Result := Current + (7 - (CurrentDay - ADay))
Else Result := Current + (ADay - CurrentDay);
end;
Вроде так. Надо под дебагерром проверить на разных днях.