24.09.2009, 08:43
общий
это ответ
Здравствуйте, Al_Sha.
Предлагаю Вам свой вариант решения.
На Форме:
Edit1 - для ввода исходной даты
Edit2 - для вывода результата
Button1 - кнопка запуска расчета
Полный код и описание в приложениию
При вводе исходной даты 01.03.2009 результат 14.03.2009.
Удачи.
Приложение:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
function IsHolyday(date_:TDate):boolean;
private
{ Private declarations }
public
{ Public declarations }
end;
const
holiday : array[0..2] of string = ('03.03.2009', '05.03.2009', '08.03.2009'); {тестовый массив выходных дней}
kol: integer = 10; {количество прибавляемых дней}
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
dt1, dt2: TDate;
i: integer;
begin
try
dt1:= StrToDate(Edit1.Text); {исходная дата}
except
exit;
end;
dt2:= dt1;
i:= 1;
while i <= kol do
begin
dt2:= dt2 + 1; {прибавляем по 1-му дню}
if IsHolyday(dt2) then i:= i-1; {проверяем выходной или нет, если выходной, то уменьшаем счетчик}
Inc(i); {увеличение счетчика}
end;
Edit2.Text:= DateToStr(dt2); {вывод результата}
end;
function TForm1.IsHolyday(date_:TDate):boolean; {функция определения вых. дня}
var
temp: boolean;
i: integer;
begin
temp:= False;
for i:= 0 to Length(holiday)-1 do
if StrToDate(holiday[i]) = date_ then temp:= True;
IsHolyday:= temp;
end;
end.
5
Прибавляю ++<br>СПАСИБО БОЛЬШОЕ....