با سلام خدمت آقای خرسندی

امروز بر حسب نیاز برای استفاده از پارامتر عددی تابع IncDay این کامپوننت، به مشکل مشابه تابع DecDay این دوستمون (که خودشون رفع کردن) برخوردم!!!
کد تابع مربوطه رو دستکاری کردم ولی خروجی درستی نداد.

ممنون میشم این مشکل اصلاح بشه.

نقل قول نوشته شده توسط AliReza Vafakhah مشاهده تاپیک
امروز به یه مشکل تو این کامپوننت برخورد کردم که خوشبختانه بطرف کردم.

مشکل اینه که تابع DecDay که یه پارامتر عددی داره و برحسب مقدار پارامتر روز را کم کرده و تاریخ را نمایش میده . البته با کم کردن روز ، ماه و سال هم کم میشه. مشکل اینجاست که وقتی مثلا تاریخ 1390/11/02 باشه و حالا از این تاریخ 7 روز را توسط تابع DecDay کم کنید ، آن وقت خروجی شما خواهد بود 1390/10/30 و این تاریخ صحیح نیست.

کد زیر را جایگزین کد کامپوننت کنید.


function DecDay(ADate: string; DateKind: TDateKind; ANumberOfDay: integer = 1): string;
var
Year, Month, Day: word;
TempDay: Integer;
begin
SeparateYMD(ADate, Year, Month, Day);

if Day - ANumberOfDay >= 1 then
Dec(Day, ANumberOfDay)
else
begin
if Month > 1 then
begin
{Update Code}
TempDay:= Day {Insert};
Dec(Month);
Day := DaysOfMonths[DateKind, Month];
{Dec Day Now Return True Day}
Dec(Day, Abs(TempDay - ANumberOfDay));{Insert}
end
else
DecMonth(ADate, DateKind, ANumberOfDay);
end;

Result := ConcatenateDate(Month, Year, Month, Day);
end;