View Full Version : تقویم فارسی 100 درصد درست و کاملا مورد اعتماد
ehsan707
جمعه 30 بهمن 1383, 11:36 صبح
اینجا رو ببینید
http://ehsan707.topcities.com
بدون کوچکترین اشتباهی و کاملا سریع
و منتظر نسخه دات نتی هم باشید :wink:
Hamedm
جمعه 30 بهمن 1383, 11:41 صبح
ممنون :flower: :flower: :flower:
linux
جمعه 30 بهمن 1383, 11:51 صبح
یکی از مشکلات تقریبا همه برنامه نویسها تقویم فارسی میباشد تقویم شمسی یکی از کاملترین تقویمهای جهان است که توسط عمر خیام در زمان ملکشاه ایجاد گردیده است کنترلهای مختلف و متفاوتی در اینترنت وجود دارند که گاها بکار گرفته میشوند. این کنترلها غالبا نتایج اشتباهی میدهندو قابل اعتماد نمیباشند .
این تقویمی که استفاده می کنیم در سال 1925 مورد تجدید نظر قرار گرفته!
بگردی توی اینترنت الگوریتمهای ساده ای پیدا می کنی که این کار را انجام می دهند. قبلا هم توی این قسمت 10 سورس قرار گرفته دست شما هم درد نکنه مرسی در ضمن گاها غلط است!
در ضمن میشه بگی از کدام سورس استفاده کردی؟
چند مورد هم اشتباه داره!
set_shamsi_date(1383, 32, 34) این امتحان کن ببین چی بر می گردونه؟ خوب درست هست از یه نظری ولی خوب کاربر نباید همچین کاری بتونه بکنه
set_normal_date(2005, 3, 20) اینو امتحان کن! غلط محاسبه می کنه! تو تقویم نگاه کنی باید 30/12/1383 نشون بده و کلا با اینکه زحمت کشیدی ولی ماه مارس را اشتباه تبدیل می کند
set_normal_date(2005, 3, 1) این را امتحان کن بعدش برو تو تقویم ها ببین چه روزی هست
ehsan707
جمعه 30 بهمن 1383, 13:25 عصر
باشه من سعی میکنم که این ها رو بر طرف کنم :flower:
خیلی ممنون از اینکه شما برسی کردید
ehsan707
جمعه 30 بهمن 1383, 15:42 عصر
بفرمایید این همه نسخه جدید که البته هنوز کامل نیست همین چند روزه این قسمتهای عربی و هبری هم کامل میکنم فکر کنم به عنوان جریمه خوب باشه این کار رو انجام بدم
مشکل ماه مارس هم کاملا طرف شده
اگه ماکروسافت هم از روز اول میگفت ویندوز من 100 تا مشکل داره هیچوقت مشکلات ویندوز حل نمیشد :sorry:
ehsan707
جمعه 30 بهمن 1383, 15:43 عصر
Dim a As New shamsi_EB
a.jdn_year = 2004
a.jdn_month = 12
a.jdn_day = 31
a.Grab_Jdn
MsgBox a.sh_year & "/" & a.sh_month & "/" & a.sh_day
MsgBox a.sh_MonthName
'********************
Dim b As New shamsi_EB
b.sh_year = 1383
b.sh_month = 10
b.sh_day = 11
b.Grab_Shamsi
MsgBox b.jdn_year & "/" & b.jdn_month & "/" & b.jdn_day
MsgBox b.sh_MonthName
Dim c As New EBParsiCalender.EB_parsiCalenderClass
c.jdn_year = 2004
c.jdn_month = 12
c.jdn_day = 30
c.Grab_Jdn()
MsgBox(c.sh_year & "/" & c.sh_month & "/" & c.sh_day)
linux
جمعه 30 بهمن 1383, 17:26 عصر
http://www.barnamenevis.org/forum/viewtopic.php?t=3863
من قبلا یکسری کارها کردم اینجا را ببینید. البته از آن موقع تا حالا کلی کد را تغییر دادم و اصلاح کردم که upload نکردم حتما سورس ها نگاه کنید به شما کمک خواهد کرد.
ehsan707
جمعه 30 بهمن 1383, 17:41 عصر
خیلی ممنون linux جان شما واقعا لطف داری من ابتدا از همین داستان jdn استفاده کرده بودم ولی همونطور که دیدی مشکل داشت مجبور شدم که برای سالهای کبیسه الگوریتمهایی جدید بنویسم که البته با آرایه کار میکنه و سریع تره
در حال حاظر مشکل برای ماههای عربی اینکه که همونطور که قبلا هم گفتم تقویم عربی مثل فارسی بهترین تقویم نیست و معلوم نیست که چه وقت مثلا ماه عربی تموم میشه ؟!
از ماههای هبرو (یهودی) هم که اصلا سر در نمیارم ؟!
همینطور اگه وقت اجازه بده سعی در ایجاد یک کنترل با نمایش ویژوال دارم که خیال همه رو واسه همیشه راحت کنم.
اگه خطایی در برنامه دیدی حتما منت بگذارید و به من اطلاع بدید.
:wink:
ProgrammingLove
جمعه 30 بهمن 1383, 20:32 عصر
احسان جان ، یه سری به www.farsicomponents.com بزن . یه pdf در این مورد داره . حتما مطالعه کن
حامد مصافی
شنبه 01 اسفند 1383, 01:40 صبح
http://www.barnamenevis.org/forum/viewtopic.php?t=3863
من قبلا ی�سری �ارها �ردم اینجا را ببینید. البته از آن موقع تا حالا �لی �د را تغییر دادم و اصلاح �ردم �ه upload ن�ردم حتما سورس ها نگاه �نید به شما �م� خواهد �رد.
:تشویق: :تشویق: :تشویق:
پس این تقویم رو شما نوشتی ؟؟
من نسخه قبلی رو دانلود کرده بودم و ازش استفاده می کردم
باید بگم که : :موفق:
linux
شنبه 01 اسفند 1383, 04:58 صبح
خیلی ممنون linux جان شما واقعا لطف داری من ابتدا از همین داستان jdn استفاده کرده بودم ولی همونطور که دیدی مشکل داشت مجبور شدم که برای سالهای کبیسه الگوریتمهایی جدید بنویسم که البته با آرایه کار میکنه و سریع تره
خوب نحوه محاسبه زیاد پیچیده نیست!
Private Function leap_persian(ByVal iYear As Integer) As Boolean
If iYear > 0 Then
leap_persian = ((((MMod((iYear - (474)), 2820) + 474) + 38) * 682) Mod 2816) < 682
Else
leap_persian = ((((MMod((iYear - (473)), 2820) + 474) + 38) * 682) Mod 2816) < 682
End If
End Function
Private Function MMod(ByVal numerator As Integer, ByVal denominator As Integer) As Integer
MMod = ((numerator Mod denominator) + denominator) Mod denominator
End Function
با این یه کد کوچک شما می تونید کبیسه بودن سال را چک کنید .
ehsan707
شنبه 01 اسفند 1383, 10:52 صبح
احسان جان ، یه سری به www.farsicomponents.com بزن . یه pdf در این مورد داره . حتما مطالعه کن
:flower:
من پیداش نمیکنم میشه لینک مشتقیم بدید
ehsan707
شنبه 01 اسفند 1383, 10:57 صبح
خیلی ممنون linux جان شما واقعا لطف داری من ابتدا از همین داستان jdn استفاده کرده بودم ولی همونطور که دیدی مشکل داشت مجبور شدم که برای سالهای کبیسه الگوریتمهایی جدید بنویسم که البته با آرایه کار میکنه و سریع تره
خوب نحوه محاسبه زیاد پیچیده نیست!
Private Function leap_persian(ByVal iYear As Integer) As Boolean
If iYear > 0 Then
leap_persian = ((((MMod((iYear - (474)), 2820) + 474) + 38) * 682) Mod 2816) < 682
Else
leap_persian = ((((MMod((iYear - (473)), 2820) + 474) + 38) * 682) Mod 2816) < 682
End If
End Function
Private Function MMod(ByVal numerator As Integer, ByVal denominator As Integer) As Integer
MMod = ((numerator Mod denominator) + denominator) Mod denominator
End Function
با این یه کد کوچک شما می تونید کبیسه بودن سال را چک کنید .
من هم تقریبا همین رو استفاده کردم البته به شکل آرایه
برنامه رو دانلود کنید و حالش رو ببرید
برای ماههای قمری هم یک ثابت قرار دادم که باید اون رو با شهر خودتون ست کنید مثلا برای تهران 1- میشه چون ما یه روز از تقویم مکه عقب تریم
اگه کسی از ماهای یهودی سر در میاره و میتونه چکش کنه لطفا این کار رو انجام بده
از همه ممنون
linux
شنبه 01 اسفند 1383, 12:06 عصر
برنامه رو دانلود کنید و حالش رو ببرید
برای ماههای قمری هم یک ثابت قرار دادم که باید اون رو با شهر خودتون ست کنید مثلا برای تهران 1- میشه چون ما یه روز از تقویم مکه عقب تریم
اگه کسی از ماهای یهودی سر در میاره و میتونه چکش کنه لطفا این کار رو انجام بده
از بابت برنامه دستتون درد نکنه به هر یه تمرین برنامه نویسی برای شماست این مشکلات قبلا حل شده.
تقویم قمری مشکلات خودشو داره اصلا هم تقویم بدرد بخوری نیست.
به نظر شما تقویم یهودی به درد کسی می خوره؟ پس بهتر هست که روی همون تقویم شمسی کار کنید تا اشکالات برطرف بشه.
در ضمن همه این مشکلات در .net freamwork 2 حل شده و خود ماکروسافت این تقویم ها را ایجاد کرده است.
به هر حال تمرین خوبی برای برنامه نویسی هست.
ehsan707
شنبه 01 اسفند 1383, 12:49 عصر
در حال حاظر مشکلی در تقویم ندیدم مگه اینکه شما چیز جدیدی پیدا کنید .
ehsan707
جمعه 07 اسفند 1383, 15:23 عصر
http://ehsan707.topcities.com
همراه با نسخه دات نت و ماههای قمری و یهودی برای رهر دو نسخه
linux
شنبه 08 اسفند 1383, 15:55 عصر
این نمونه از برنامه را ببین شاید بتونی ایده های بهتری بگیری
من نسخه قبلی این برنامه را قبلا upload کرده بودم این نسخه جدیدتر هستش
البته باید بعضی چیزهای دیگر هم اضافه شود
linux
شنبه 08 اسفند 1383, 15:57 عصر
این نمونه از برنامه را ببین شاید بتونی ایده های بهتری بگیری
من نسخه قبلی این برنامه را قبلا upload کرده بودم این نسخه جدیدتر هستش
البته باید بعضی چیزهای دیگر هم اضافه شود
ehsan707
شنبه 08 اسفند 1383, 17:55 عصر
دوست خیلی عزیز من برنامه شما رو چک کردم ولی متاسفانه ممکن نشد که توضیحات ارزشمندتون رو بخونم خواهشمندم که بر روی encoding=utf8 کمی دقت نظر بفرمایید.
کدهای برنامه رو در حال حاظر نگاه میکنم در این فاصله شما هم لطفا نگاهی به این صفحه بیندازید
تشکر
http://ehsan707.topcities.com/farsi_tips.htm
linux
شنبه 08 اسفند 1383, 19:27 عصر
چی را نتونستی بخونی؟ اگر ویندوز xp داشته باشی نباید مشکلی باشه
ببین چرا باید کاربر را جزییات برنامه درگیری کنی؟
ehsan707
شنبه 08 اسفند 1383, 19:54 عصر
دوست عزیز من windows2000 server دارم و وقتی پروزه شما رو باز کردم همه لیبلها به هم ریخت البته تکست باکسها درست بودند
برای آزمایش دو کتابخانه کد dll رو در یک پروژه asp.net قرار دادم و اجرا کردم
Dim a As New EB_Pshamsi.EB_Pshamsi
a.jdn_year = 2005
a.jdn_month = 3
a.jdn_day = 1
a.Grab_Jdn()
Label1.Text = (a.sh_year & "/" & a.sh_month & "/" & a.sh_day)
و کد مربوط به کتابخانه dll شما
Dim b As New PersianToolsPack.PersianDate
Dim c As PersianToolsPack.PersianDate.PersianDateType
c = b.CivilToPersian("2005 / 3 / 1")
Label2.Text = c.shortDate
هر دو یک جواب رو بر میگردانند اما چند نکته کوچک به نظرم رسید که شاید بد نباشه شما هم مطلع کنم
1- در کد اول تنها یک کلاس در حافظه قرار داده شده و در کد دوم 2 کلاس تا به اینجا هیچ مشکلی نیست حتی ممکنه که کد دوم بهتر هم باشه ولی در زمانی که در کلاس PersianToolsPack نگاه کنیم میبینیم که برخی چیزها که ظاهرا نامربوط هستند وجود داره مثلا fasimassagebox از کلاس ویندوز فرم توارث داره که در یک پروژه Asp.net یک پیام خطا تحویل میده
نتیجه اینکه کلاس قاعده خودش رو نقض میکنه و به نظر من بهتره که این چند تا رو از هم جدا کنی
2-کلاس اول توابع ماهای قمری رو هم داره ولی با حجم کمتری رو گرفته ؟!
3- اعلان massagebox فارسی چندان جالب نیست و اصلا شکل معمول رو نداره ؟!
خیلی جالب بود خسته نباشی
ehsan707
شنبه 08 اسفند 1383, 20:09 عصر
چی را نتونستی بخونی؟ اگر ویندوز xp داشته باشی نباید مشکلی باشه
ببین چرا باید کاربر را جزییات برنامه درگیری کنی؟
من اصلا نمیخوام کاربر درگیر جزییات برنامه بشه ولی فقط احساس میکنم که به عنوان یه برنامه نویس راحت ترم که همه چیز رو اینجوری داشته باشم - البته کاربر فقط باید یه کمی زور بزنه و در نتیجه در هر رو نسخه VS2000 و VS.NET همه چیز رو گیر بیاره یعنی فقط یکبار باید یاد بگیره و استفاده کنه .
linux
شنبه 08 اسفند 1383, 20:51 عصر
1- در کد اول تنها یک کلاس در حافظه قرار داده شده و در کد دوم 2 کلاس تا به اینجا هیچ مشکلی نیست حتی ممکنه که کد دوم بهتر هم باشه ولی در زمانی که در کلاس PersianToolsPack نگاه کنیم میبینیم که برخی چیزها که ظاهرا نامربوط هستند وجود داره مثلا fasimassagebox از کلاس ویندوز فرم توارث داره که در یک پروژه Asp.net یک پیام خطا تحویل میده
نتیجه اینکه کلاس قاعده خودش رو نقض میکنه و به نظر من بهتره که این چند تا رو از هم جدا کنی
ببینید شما می تونید از این روش هم استفاده کنید
Dim b As New PersianToolsPack.PersianDate
Label2.Text = b.CivilToPersian("2005 / 3 / 1").shortDate
از این روش می تونید استفاده کنید.
توضیح داده شده بود در کد اصلی اگر نگاه می کردید دو روش فراخوانی داریم حتا شما می تونید از این
روش زیر هم استفاده کنید
Label2.Text = PersianToolsPack.PersianDate.CivilToPersian("2005 / 3 / 1").shortDate
بدون اینکه هیچ متغیری را مقدار دهی کنید چون توابع بصورت Shared Function
تعریف شده اند
در روش اول یک کلاس فراخوانی میشد و دومی یک ساختار هست.
farsimsgbox دقیقا msgbox را فارسی می کند و من در پروژه هام ازش استفاده می کنم و تا حالا هم در پروژه های asp.net استفاده نکرده ام .
در مورد
-کلاس اول توابع ماهای قمری رو هم داره ولی با حجم کمتری رو گرفته ؟!
ماهای قمری از خود دات نت قابل دسترسی هست و محاسبه دوباره اش را نیاز ندیدم در مورد حجم فایل هم حق با شماست! من منظور طراحی یک مجموع از کلاس های مورد استفاده در برنامه های فارسی بوده نه فقط
تبدیل تاریخ.
اعلان massagebox فارسی چندان جالب نیست و اصلا شکل معمول رو نداره
این دقیقا msgbox خود ویندوز هست وقتیکه RTL باشه من وقت caption ها را عوض کردم
linux
شنبه 08 اسفند 1383, 20:53 عصر
بازم اگر نظری داشتید ممنون می شم که بگید
Ebrahim_T
یک شنبه 09 اسفند 1383, 01:36 صبح
با عرض سلام
ببخشید اقای Linux (با عزض شرمندگی اسم شما رو نمیدونم :oops: )
ضمیمه شما قابل دریافت نیست. (چرا؟ :گیج: )
aliha499
سه شنبه 27 آذر 1386, 17:45 عصر
چند پیشنهاد برای افزایش کارائی این ابزار کارآمد و عالی. قبلا از زحمت شما برای ساخت این کنترل و ارائه بی منت در اینترنت سپاسگزارم.
- کنترل شما وقتی ظاهر می شود ، به هیچ وجه نمی توان بدون هیچ انتخابی آن را بست. یعنی کلید انصراف یا بستن ندارد.
2- اگر می شد فاصله زمانی بین دو تاریخ را به تعداد روز - ماه و روز - سال ، ماه و روز و طرق دیگر استخراج می کرد خیلی عالی میشد.
3- کنترل بتواند با گرفتن یک تاریخ شمسی ، نام روز آن را برگرداند ( شنبه یکشنبه و ...)
4- رنگ محیط و تکست ها بدست کاربر نهائی قابل تغییر باشد.
5- کنترل قابلیت تغییر اندازه را داشته باشد.
6- محل لیبل نمایشگر تاریخ منتخب درست در وسط باند نیست و رنگ آن خوب نیست. اگر می شد نوع محتویات قابل نمایش آن نیز بدست کاربر نهائی
بود ، عالی می شد.
7- فونت آن قابل تغییر بود.
در ضمن اگر می شد messagebox دارای کلیدهای فارسی بود خیلی عالی میشد.
hamed_arfaee
سه شنبه 27 آذر 1386, 21:52 عصر
عجب نبش قبری
hamed_arfaee
سه شنبه 27 آذر 1386, 21:54 عصر
آقا می خواهیی نظر بدی بیا به این نظر بده :
http://barnamenevis.org/forum/showthread.php?p=412454
mpmsoft
چهارشنبه 28 آذر 1386, 14:15 عصر
دوستان این لینک دانلود خرابه
انگار فیلتر شده وقتی با فیلتر شکن هم می رم ولی می ره تو یک سایت دیگه
لطفا لینک دانلود درستشو بذارید
DoctorJay
چهارشنبه 28 آذر 1386, 21:46 عصر
آقا من واسه ... متاسفم ! لینکی که توی پست 1 اومده فیلتر شده !!!!!!!
>> فیلتر شکن (www.indya.ws)
مبین رنجبر
پنج شنبه 29 آذر 1386, 09:18 صبح
دوستان عزیز به تاریخ این تاپیک توجه کرده اید ؟
mpmsoft
پنج شنبه 29 آذر 1386, 10:51 صبح
دوست عزیز من اول تاریخ ایجاد تاپیک رو نگاه می کنم بعد به روند پاسخها نگاه می کنم و می بینم این تاپیک از اولویت بالایی بر خوردار هست پس خواهشن تاپیکرو با جوابهای بیهوده البته ببخشیدا شلوغ نکنید من گفتم لینک دانلود خرابه حالا یکی می گه با فیلتر شکن تست کن یکی می گه تاریخ ایجاد تاپیک رو چک کن. که من ذکر کردم البته اگر بخونید گفتم با فیلتر شکن هم تست کردم حالا لطفا اگر شما این ابزار را دارید لینک جدید بذارید تا دیگر دوستان هم بتوانند استفاده کنند.
در ضمن تاپیکهای خوب موندگار هستند.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.