Код: Выделить всё
1 var
2 ...
3 begin
4 ...
5
6 Result:= Date;
7 K:= Abs(Number);
8
9 // Если дата не задана – прервать вычисления
10 if Date = ''
11 then
12 Exit();
13
14 // Если разница равна 0, не изменять дату
15 if K = 0
16 then
17 Result:= Date
18 else
19 begin
20 // Определить знак разницы
21 if Number > 0 then Sign:= 1 else Sign:= -1;
22
23 // Цикл по количеству дней
24 I:= 1;
25 Date2:= Date;
26 while I <= K do
27 begin
28 Date2:= DateAdd('d'; Date2; Sign);
29 Holiday:= DateIsHoliday(Date2);
30 // Пока день выходной или праздничный, увеличивать общее количество дней на 1
31 while Holiday = True do
32 begin
33 inс(K);
34 inс(I);
35 Date2:= DateAdd('d'; Date2; Sign);
36 Holiday:= DateIsHoliday(Date2);
37 end
38 inс(I);
39 end
40 Result:= Date2;
41 end
42 end
