# Native Code > برنامه نویسی در Delphi > کامپوننت های سایر شرکت ها، و توسعه کامپوننت >  نسخه جدید dll فارسی برای عزیزان 3.2.0.0

## Touska

*دوستان عزیز آخرین نسخه این dll در آخر این Topic  موجود می باشد به صفحه آخر مراجعه فرمائید.*

سلام                                                          

گذشته این پست : http://www.barnamenevis.org/sh...ad.php?t=30635

و آینده آن :

تابع های 

Function PrintMonth(Dates : TDate) : ShortString

این تایع یک تاریخ میلادی گرفته و سال و ماه شمس آن را بر می گرداند.

Function PrintMonthf(Dates : ShortString) : ShortString

این تابع یک تاریخ شمسی را گرفته و سال و ماه شمسی آن را بر می گرداند.

Function XAddToDate(XDate : ShortString; XAdd : Integer) : ShortString

این تابع یک تاریخ شمسی را گرفته و به آن XAdd روز اضافه می کند و شمسی بر می گرداند.

Function XSubDate(XDate : ShortString; XSub : Integer) : ShortString

این تابع یک تاریخ شمسی را گرفته و از آن XSub روز کم می کند و شمسی بر می گرداند.

FAQ :

برای استفاده از این تاریخ ها برای Sql چه در Select ها و چه در Like و چه در Between شما

فیلدی از نوع char با Size 10 در دیتابیسی از نوع collation = Arabic_CI_AI می سازید و از آن 

برای تاریخ استفاده می کنید.  مشکلی نخواهید داشت.

برای استفاده از امکانات و توضیحات بیشتر به لینک گذشته این پست مراجعه کنید.


همه برنامه نویس ها رو دوست دارم  :قلب:

----------


## Developer Programmer

پیر شی الهی مصطفی جون دل من!

فرض کن ؛ یه بنده خدایی خواست مدت اشتراکش رو یک ماه تمدید کنه... 
حالا ماه رو 30 روزه بگیریم یا 31 روزه ؟

----------


## Developer Programmer

مصطفی بالام جان
چرا همیشه باید تاریخ جاری سیستم رو به شمسی برگردونه ؟ نمی شه ما بهش تاریخ بدیم ؟

----------


## Touska

این هست دیگه : XDateToStr(XDate : TDateTime) : ShortString

----------


## Developer Programmer

وای من دورت بگردم ... که اینقدر خوبی !

----------


## oghab

سلام
واقعا ممنون از لطف شما
از قبلی خیلی استفاده کردم و حالا که دیگه خیلی عالیه!!!  :تشویق: 
کاش یه جوری می تونستم جبران کنم   :خجالت:  
وای اونقدر سواد ندارم که از اینکارا بتونم بکنم.
فقط دعا می کنم همیشه سلامت و موفق باشی!

----------


## Touska

*دوستان عزیز آخرین نسخه این dll در آخر این Topic  موجود می باشد به صفحه آخر مراجعه فرمائید.*

و نسخه جدید تر اون :

Function XShamsiToMiladi(XDate : ShortString) : TDateTime

تابع تبدیل شمسی به میلادی

Function XMiladiTOShamsi(XDate : TDateTime) : ShortString

تابع تبدیل میلادی به شمسی

موفق باشید  :قلب:

----------


## oghab

دمت گرم
مرسی

----------


## Touska

*دوستان عزیز آخرین نسخه این dll در آخر این Topic  موجود می باشد به صفحه آخر مراجعه فرمائید.*

و نسخه Calender فارسی برای بچه های گل :  :قلب: 

و روش استفاده از اون اینجوری هست :

اینا رو تو implementation اضافه کنید.

Procedure CreateDlg;
    External 'PersianDlg.Dll';

Function Clicks : Boolean;
    External 'PersianDlg.Dll';

Function DateExport : ShortString;
    External 'PersianDlg.Dll';
و روش استفاده در یک Onclick به این شکل :

 CreateDlg;
 IF Clicks Then
    Edit4.Text := DateExport;
و البته اولی با فونت Traffic هست.
و دومی با فونت Tahoma می باشد.  :لبخند گشاده!: 



موفق باشید :)

----------


## Touska

*دوستان عزیز آخرین نسخه این dll در آخر این Topic  موجود می باشد به صفحه آخر مراجعه فرمائید.*

نسخه جدید  Persian.Dll

و این قابلیت :

Function XShortTOWide(XDate : ShortString) : ShortString;برای تبدیل تاریخ 1385/07/03 به دوشنبه 3 مهر  1385

موفق باشید  :قلب:

----------


## Developer Programmer

مصطفی جان؛
یه محبتی کن و یه Sample اساسی طراحی کن؛
مرسی.

----------


## ehsane

آقا خدایش دستت درد نکنه واقعا عالی بود

----------


## szabeh

در نسخه 3.3.1.0 در قسمت تفاضل تاریخ مشکلی دارد لطفا آقا مصطفی یک نگاهی بکند.

----------


## szabeh

در نسخه 3.3.1.0 در قسمت تفاضل تاریخ مشکلی دارد لطفا آقا مصطفی یک نگاهی بکند.

----------


## Batman

آقا touska دست گلت درد نکنه
ممنون ولی کدومش آخرین ورژن هستش

----------


## Touska

*دوستان عزیز آخرین نسخه این dll در آخر این Topic  موجود می باشد به صفحه آخر مراجعه فرمائید.*

اینم آخرین ورژنش : لینک

اون مشکل تفریقو هم درست می کنم ، ممنون از همه :)

----------


## szabeh

با تشکر از بچه های برنامه نویس
لطفا آقا مصطفی اگه مشکل تفاضل تاریخ حل شد نسخه جدید را آپلود کن
در ضمن در persiandlg اگه ممکنه دکمه های سال قبل و بعد را هم بگذارید جهت کاملتر شدن آن.

----------


## mskm100

آقا مصطفی دستت درد نکنه من با اون ورژن قبلیت هم کار کرده بودم خیلی کارم رو را انداخته بود و تا حالا هم هر وقت تو برنامه ای تاریخ شمسی نیاز داشته باشم از dll شما استفاده می کنم

----------


## Touska

*دوستان عزیز آخرین نسخه این dll در آخر این Topic  موجود می باشد به صفحه آخر مراجعه فرمائید.*
بر اساس گزارش 2 نفر از دوستان یک Bug در این dll وجود داشت که در توابع :

Function XAddToDate(XDate : ShortString; XAdd : Integer) : ShortStringو

Function XSubDate(XDate : ShortString; XSub : Integer) : ShortStringمشاهده شده بود که برطرف شد حتی مشکل کبیسه رو هم ندارن.



> PrintDate      //خروجی تاریخ به صورت کامل دوشنبه 19 آذر 1386
>  PrintMonth     //خروجی ماه و سال بر اساس تاریخ سیستمی داده شده
>  PrintMonthf   //خروجی ماه و سال بر اساس تاریخ رشته ایی داده شده
>  PrintNormal   //خروجی تاریخ بصورت 1386/12/01
>  DiffDate      //خروجی تفاوت عددی بین دو تاریخ
>  XDateToStr    //خروجی تبدیل تاریخ به تاریخ رشته ایی
>  XStrToDate    //بر عکس تابع بالایی
>  XStrToDateDef //مشابه تابع بالایی و با داشتن پیش فرض در صورت اشتباه
>  XAddToDate    //اضافه کردن به تاریخ
> ...


موفق باشید  :قلب:

----------


## jafari1

سلام
دوست عزیز  ضمن تشکر و قدردانی از زحمات شما به عرض میرسانم تابع DiffDate //خروجی تفاوت عددی بین دو تاریخ
خطا میدهد و کار نمیکند

----------


## szabeh

> *دوستان عزیز آخرین نسخه این dll در آخر این Topic  موجود می باشد به صفحه آخر مراجعه فرمائید.*
>  اون مشکل تفریقو هم درست می کنم ، ممنون از همه :)


آقا مصطفی مشکل تفریق هنوز حل نشده.

----------


## best_ariya

آقا مصطفی ممنون از تقویم و توابع جدید

----------


## Touska

> آقا مصطفی مشکل تفریق هنوز حل نشده.


حتما در اولین فرصت مشکلشو حل می کنم .

ولی بنظرم مشکلی نداشت تستش کرده بودم یگ Demo از مشکل می ذارید ببنیم چه طورشه.

موفق باشید :)

----------


## Touska

*دوستان عزیز آخرین نسخه این dll در آخر این Topic  موجود می باشد به صفحه آخر مراجعه فرمائید.

*این هم اینشا الله بدون مشکله، تستش کنید آخرین ورژنش :

بهمراه Demo برای طرز استفاده از ابزارش.

موفق باشید  :قلب:

----------


## mskm100

مصطفی جان دستت درد نکنه، من خیلی وقته که از dll شما استفاده می کنم و خیلی کارم رو راه انداخته فقط اگر ممکنه بگید چطور و با چه تابعی باید سال کبیسه را تنظیم کنم

موفق و پیروز باشید

----------


## Touska

> مصطفی جان دستت درد نکنه، من خیلی وقته که از dll شما استفاده می کنم و خیلی کارم رو راه انداخته فقط اگر ممکنه بگید چطور و با چه تابعی باید سال کبیسه را تنظیم کنم
> 
> موفق و پیروز باشید


سلام ، ممنون از حسن انتخاب شما

احتیاج به تنظیم چیزی نسیت خودش به سال کبیسه برسه

آن یک روز محاسبه می کنه.

موفق باشید :)

----------


## dkhatibi

حوصله ی تبدیل به کامپو ننت را ندارید؟

----------


## mehdi.mj

عزیز مر30 از زحماتت

----------


## szabeh

با تشکر از زحمات آقا مصطفی
مشکل تفریق حل شده ولی در تاریخ کبیسه اشکال دارد یک سال دیرتر  محاسبه میکند
مثال : 1383/12/30 را بدهید ببینید  اشتباه  برمیگردونه
سال 1384 را کبیسه میشناسه
ممنون

----------


## Touska

> با تشکر از زحمات آقا مصطفی
> مشکل تفریق حل شده ولی در تاریخ کبیسه اشکال دارد یک سال دیرتر  محاسبه میکند
> مثال : 1383/12/30 را بدهید ببینید  اشتباه  برمیگردونه
> سال 1384 را کبیسه میشناسه
> ممنون


باشه حتما چک می کنم.

موفق باشید :)

----------


## مصطفی مختاری

آقا این سال کبیسه درست نشد؟
ممنون از زحمات بی شاعبه شما.

----------


## rainstorm

سلام
من قبلاً یه کامپوننت برای تبدیل تاریخ میلادی به شمسی نوشته بودم حتی یه datepicker شبیه دیت پیکر دلفی ولی زیباتر هم بهش اضافه کرده بوده اما به تازگی متوجه شدم سال های کبیسه رو به درستی محاسبه نمی کنه و همین دلیل باعث شده که بعضی تاریخ ها رو اشتباه حساب کنه .... الان چند وقتی هست که دنبال یه کامپوننت در این مورد می گردم که به پرشین دی ال ال برخوردم متأسفانه این Dll هم مشکل سال های کبیسه رو داره
تاریخ زیر رو امتحان کنین
01/11/1988
شمسیشو یک روز بیشتر نشون می ده و جالبه که وقتی تاریخ شمسی ای رو که بهت میده با تابع خودش به میلادی تبدیل می کنی 02/11/1988 رو بهت میده
بد نیست امتحان کنین :متفکر:

----------


## Touska

[B]*دوستان عزیز آخرین نسخه این dll در آخر این Topic  موجود می باشد به صفحه آخر مراجعه فرمائید.*

با سلام

+ اضافه شدن تابع چک کردن فرمت صحیح بودن تاریخ وارد شده :

Function XValiDate(XDate : ShortString) : Boolean;+ اضافه شدن تابع چک کردن تابع سال کبیسه

Function XIsLeapYear(XYear : Integer) : Boolean;و تغییر نام دو تابع :

از DiffDate به XDiffDate 

از PrintMonth و PrintMonthf به  XPrintMonth و XPrintMonthf

و برای PersianDlg یک تغییر کلی دادم که با صدا زدن یک تابع کار شما را انجام می دهد :

Function XDateExport : ShortString;و اینکه تمامی ابزار  با سال کبیسه مشکلی ندارد. 
در صورت هر مشکلی منو هم در جریان بذارید.

و اینم فایل ها :

----------


## oghab

سلام
 :تشویق: 
من قبلا هم از dll نسخه قبلي در دلفي خيلي استفاده كردم.
و واقعا بايد از شما تشكر كنم. 
فقط يه سوال داشتم. آيا در برنامه access هم ميشه از اين dll  و توابع آن استفاده كرد؟

----------


## m_r_moini

آقا دستت درد نكنه . اگر امكان داره خروجي اختلاف دو تاريخ با فرمت تاريخ باشه مثلا اختلاف 12/10/1387 را با 11/09/1343 بصورت 01/01/44 برگرداند . 
با تشكر

----------


## Touska

> آقا دستت درد نكنه . اگر امكان داره خروجي اختلاف دو تاريخ با فرمت تاريخ باشه مثلا اختلاف 12/10/1387 را با 11/09/1343 بصورت 01/01/44 برگرداند . 
> با تشكر



مشکلی نیست ، ولی جایی هم بدرد میخوره ؟

----------


## m_r_moini

دوست عزيز منظورم اين است كه با تعيين اختلاف دو تاريخ سن دقيق يك نفر را به سال و ماه و روز بدست بياوريم .
باز هم مرسي

----------


## Touska

خوب شما تفاوت رو بدست بیارید بعد آن رو تقسیم بر 365  کنید ، تعداد سال بدست می آید و همینور الا آخر

همین مگه کفایت نمی دهده.

----------


## vcldeveloper

> خوب شما تفاوت رو بدست بیارید بعد آن رو تقسیم بر 365  کنید ، تعداد سال بدست می آید و همینور الا آخر
> 
> همین مگه کفایت نمی دهده.


نه، چون همه سالها 365 روزه نیستند!

----------


## dkhatibi

البته جزئ صحیح اون عدد جواب می ده و لی احتمالا برای اختلافهای بیش از 365*4 سال یک سال خطا داره

----------


## Touska

> نه، چون همه سالها 365 روزه نیستند!


بابا می دونم که سال کبیسه هم هست ، میگم اگر طرف بخواد که این تفاوت با احتساب سال کبیسه هست.

خوب می خواد بدونه چند سال گذشته آخه ؟

در اولین فرصت یک هم چین Method ی اضافه می کنم ، که آن 1 رو ز خطا هم از دست نره.

----------


## m_r_moini

استاد ارجمند بنده هنوز منتظر دريافت نتيجه در مورد اختلاف دو تاريخ با فرمت تاريخ هستم .
با تشكر
معيني

----------


## fahimi

با سلام در ویندوز  اکس پی وقتیکه از PersianDlg استفاده میکنم  هنگام خروج از نرم افزار ویندوز چندین خطا می دهد اسم تاریخ شمسی و آدرس ارورهای حافظه را می دهد

----------


## narsic

> و برای PersianDlg یک تغییر کلی دادم که با صدا زدن یک تابع کار شما را انجام می دهد :
> 
> Function XDateExport : ShortString;و اینکه تمامی ابزار  با سال کبیسه مشکلی ندارد. 
> در صورت هر مشکلی منو هم در جریان بذارید.


سلام
انتخاب گر تاریخت در ویندوز XP SP2 در زمان بسته شدن کل برنامه خطای دسترسی به DLL میده که به خاطره قالبیه که استفاده کردی .
البته در Vista & Seven مشکلی ندیدم .
کار قشنگیه من مدت هاست دارم از این DLLها استفاده میکنم .
و چند تا مشکل دیگه هم که داره اینه وقتی شروع میکنم چند ماه رو سریع عوض میکنم ناگهان برنامه یک تاریخ انتخاب میکنه و با عث بسته شدن انتخابگر میشه .
و مسئله که در نسخه قبلی هم بهش کم لطفی شده بود اینه که اجازه نمیدی تاریخ رو به انتخابگر ارسال کنیم که به جای شروع شدن از تاریخ روز از تاریخ ارسال شده شروع بشه .(برای مثال اگه فیلد متن یک تاریخ از سال 1368 باشه انتخابگر با تاریخ روز کامپیوتر شروع میشه که مشکلاتی رو برای کاربر به وجود میاره . اگه اصلاح کنی خیلی عالی میشه .)
موفق باشی

----------


## Touska

با سلام

+ اضافه شدن تابع برگردان نام روز یک تاریخ :
Function XGetNameOfDay(XDate : ShortString) : ShortString;

+ اضافه شدن تابع برگردان نام ماه یک تاریخ :
Function XGetNameOfMonth(XDate : ShortString) : ShortString;

+ اضافه شدن تابع برگردان تاریخ به فرمت دلخواه :

Function XFormatDateTime(const XFormat: string; XDateTime: TDateTime) : ShortString;

نکته : XFormat همانند فرمت پیش فرض دلفی می باشد.

موارد همچون خطا در 1 روز  و غیره در این نگارش برطرف شده است.
و همچنین نگارش جدید PersianDlg که خطای خروج آزاد سازی Skin داشت حل شد و از XCalender استفاده شده است.


و این فایل ها :
Persian.rar

PersianDlg.rar

----------


## fahimi

با تشکر از زحمات جناب آقای مصطفی سرباززاده:
در ویندوز 7  بجای کارکتر های فارسی علامت سوال نمایش داده می شود. در ویندوز اکس پی کارکتر را بصورت صحیح نمایش می دهد . 11111.pngدر ضمن تمام تنظیمات مربوط نمایش فارسی در ویندوز 7 اعمال شده است

----------


## Touska

چون آن زمان کمپایل با دلفی 7 بوده و و دلفی 7 Unicode نیست شما باشید

nonUnicode خود را در ویندوز 7 به Persian تغییر دهید.

----------


## rk1983xx

با توجه به اینکه امکانات خوبی داره این dll و تقریبا بین برنامه نویسا رایج شده 
حیف نیست که کبسیه و روز های هر ماه رو دقتش پایینه و تشخیص نمیده ؟
تابع xvalidate روز 31 رو برای 6 ماهه دوم سال هم قبول میکنه

----------


## BORHAN TEC

سلام
کامپوننت خوبیه، ولی ای کاش Open Source بود که در صورت نیاز می شد توسعش داد. اون مشکل یونیکدی هم اگه سورس کامپوننت موجود باشه خیلی راحت میشه برطرفش کرد!  :اشتباه: 



> چون آن زمان کمپایل با دلفی 7 بوده و و دلفی 7 Unicode نیست شما باشید
> 
> nonUnicode خود را در ویندوز 7 به Persian تغییر دهید.


اگه کد کامپوننت رو قرار بدین خودم این مشکل رو حل می کنم. البته اگه دوست داشتید.  :لبخند گشاده!:

----------

