با سلام.
من یه تعداد فانکشن و پروسیجر به SolarUtl آقای کامبیز خجسته اضافه کردم.
کاملش رو میذارم اینجا. توضیحاتی که آقای خجسته در ابتدای این فایل دادن رو به رسم امانت پاک نکردم.
فقط تنها کاری که کردم اینه که به ابتدای اعلان هر فانکشن و پروسیجر یه خط کامنت فارسی گذاشتم که مشخص بشه کارش چیه.
فکر کنم اکثر توابع مورد نیاز تو برنامه نویسی رو داشته باشه.
دلیل اینکه مثال آماده نکردم اینه که این یونیت فقط عملیات محاسباتی انجام میده و اینترفیس نداره. البته یه چیز تو مایه های کامپوننت آقای خورسندی توسط خود آقای خجسته آماده شده بود که به اندازه این کامپوننت کارایی نداشت.
اگه آقای خورسندی توابع این یونیت رو به کامپوننتشون اضافه کنن یا به صورت یه کامپوننت غیرویژوال به پکشون اضافه کنند فکر کنم برای دلفی کارها مرجع خوبی بشه. من لیست همه توابع و پروسیجرها رو اینجا میارم.
//آیا سال کبیسه است یا نه
function IsLeapYear(DateKind: TDateKind; Year: Word): Boolean;
//روزهای ماه
function DaysOfMonth(DateKind: TDateKind; Year, Month: Word): Word;
//آیا تاریخ صحیح است
function IsDateValid(DateKind: TDateKind; Year, Month, Day: Word): Boolean;
//تبدیل رشته به تاریخ
function StrToDateEx(DateKind: TDateKind; sDate : string;var Year, Month, Day: Word): Boolean;
//تبدیل تاریخ به رشته
function DateToStrEx(DateKind: TDateKind; Year, Month, Day: Word): string;
//تبدیل سال میلادی به شمسی با نتیجه رشته ای
function GregorianToSolarStr(Date: TDateTime): string;
//معتبر کردن تاریخ
procedure ValidateDate(DateKind: TDateKind;var Year, Month, Day: Word);
//تعداد روزهای گذشته سال
function DaysToDate(DateKind: TDateKind; Year, Month, Day: Word): Word;
//تعداد روزهای باقیمانده سال
function DaysToEndOfYear(DateKind: TDateKind; Year, Month, Day: Word): Word;
//تعداد روزها و سال را گرفته و ماه و روز مربوطه را می دهد
function DateOfDay(DateKind: TDateKind; Days, Year: Word; var Month, Day: Word): Boolean;
//شماره روز هفته
function DayOfWeekEx(DateKind: TDateKind; Year: Word; Month, Day: Word): Word;
//افزودن به تاریخ
Procedure IncDate(DateKind: TDateKind;var Year, Month, Day: Word; AYears, AMonths, ADays: Smallint);overload;
function IncDate(DateKind: TDateKind; sDate: string; AYears, AMonths, ADays: Smallint):string;overload;
//تبدیل تاریخ میلادی به شمسی بصورت مجزا
function GregorianToSolar(var Year, Month, Day: Word): Boolean;
//تبدیل تاریخ شمسی به میلادی
function SolarToGregorian(var Year, Month, Day: Word): Boolean;
//تبدیل تاریخ میلادی به شمسی
function SolarEncodeDate(Year, Month, Day: Word): TDateTime;
//تبدیل تاریخ میلادی به شمسی
procedure SolarDecodeDate(Date: TDateTime; var Year, Month, Day: Word);
//تبدیل تاریخ میلادی به شمسی
procedure SolarDecodeDateStr(Date: TDateTime; var Year, Month, Day: String);
//مقدار عددی تاریخ شمسی
function SolarDateToInt(Year, Month, Day: Word): Integer;overload;
//مقدار عددی تاریخ شمسی
function SolarDateToInt(SolarStrDate: String): Integer;overload;
//برگرداندن عدد به تاریخ شمسی
function IntToSolarDate(SolarIntDate: Integer): String;
//تعداد روزهای بین دو تاریخ شمسی
function SolarDaysBetween(const SolarNow, SolarThen: String): Integer;
//برگرداندن المانهای تاریخ شمسی بصورت صحیح
function SolarDateElemans(SolarDate: String; var Year, Month, Day: Word): Boolean;
//آیا تاریخ شمسی صحیح است؟
function IsValidSolarDate(SolarDate: String): Boolean;
//آیا رشته داده شده فقط شامل عدد است؟
function IsIntNumber (S:String):Boolean;