# Native Code > برنامه نویسی در Delphi > مباحث عمومی دلفی و پاسکال >  بدست آوردن روز تولد (شنبه تا جمعه) در تاريخ شمسي و قمري

## parastoo_zamani

با سلام

من سورس كدي مي خواستم كه بشه باهاش روز تولد افراد رو ( مثلا شنبه ، يكشنبه و ... )
هم در تاريخ شمسي و هم در تاريخ قمري بدست آورد .
يه سورس دلفي پيدا كردم كه همين كار رو انجام ميده ولي نمي دونم چه جوري ازش استفاده كنم ( تو لينك دانلودش نوشته بود با دلفي 7 نوشته شده )

لينك هاي دانلود :
1 - http://www.asiapardaz.com/downloads/Date2Date_V1059.rar
يا
2 - http://rapidshare.com/files/20146823...V1059.rar.html
يا
3 - http://www.4shared.com/file/89038721...ate_V1059.html

اگه كسي از دوستان بتونه من رو راهنمايي كنه بسيار ممنون ميشم .

با تشكر از دوستان عزيز .

----------


## جواد ملاولی

> من سورس كدي مي خواستم كه بشه باهاش روز تولد افراد رو ( مثلا شنبه ، يكشنبه و ... )هم در تاريخ شمسي و هم در تاريخ قمري بدست آورد .


سلام. متوجه منظورتون نشدم. یه کم بیشتر توضیح بدین.

----------


## merced

چك كن 
http://xcalendar.sourceforge.net

----------


## parastoo_zamani

> سلام. متوجه منظورتون نشدم. یه کم بیشتر توضیح بدین.


منظورم اينه كه با دادن تاريخ تولد مثلا 01/02/1359 برنامه بتونه روز مربوط به ايت تاريخ كه دوشنبه است رو پيدا كنه ، برنامه اي هم كه لينكش رو در بالا قرار دادم دقيقا اين كار رو مي كنه ولي من نمي تونم ازش تو دلفي استفاده كنم .

----------


## Zahed2008

سلام، چرا خودت نمی نویسی. این خیلی راحته. 1 فروردین یه سال بعد از یه سال کبیسه رو به عنوان مبداء خودت در نظر می گیری. مثلاً اگه 1 فروردین اون سال با دوشنبه شروع بشه بهش کد 1 می دی و  سه شنبه کد 2  و همین طور تا شنبه که کد 6 و یکشنبه که کد 0 می گیره. (باقیمانده تقسیم بر 7). حال مقدار روز باقیمانده از این مبداء رو حساب می کنی. مثل:
تاریخ مبداء :   1/1/1370   
تاریخ مقصد :   11/5/1375 
محاسبه:   11+5*31+(1370-1375) =  Days
 (باقیمانده تقسیم بر 7)   code = Days mod 7

فقط باید برای سالهای کبیسه چهار ساله :  Days =Days+(1375-1370) mod 4

فقط باید برای سالهای کبیسه پنج ساله :  Days =Days+(1375-1370) mod 16
البته لازم به توضیح نیست که 6 ماه اول 31 روزه و 5 ماه دوم 30 روزه و اسفند 29 روزه است.
امیدوارم توضیحاتم کافی بوده باشه. موفق باشید.

----------


## جواد ملاولی

> منظورم اينه كه با دادن تاريخ تولد مثلا 01/02/1359 برنامه بتونه روز مربوط به ايت تاريخ كه دوشنبه است رو پيدا كنه


این کامپوننت XCalender که جناب merced لینکش رو گذاشتن دقیقاً همون چیزیه که شما می خوای.




> برنامه اي هم كه لينكش رو در بالا قرار دادم دقيقا اين كار رو مي كنه ولي من نمي تونم ازش تو دلفي استفاده كنم .


من چون سرعتم پایینه نتونستم این برنامه رو دانلود کنم ولی همون طور که گفتم XCalender کارت رو به طور کامل راه می اندازه.

----------


## yalanemail

> سلام، چرا خودت نمی نویسی. این خیلی راحته. 1 فروردین یه سال بعد از یه سال کبیسه رو به عنوان مبداء خودت در نظر می گیری. مثلاً اگه 1 فروردین اون سال با دوشنبه شروع بشه بهش کد 1 می دی و سه شنبه کد 2 و همین طور تا شنبه که کد 6 و یکشنبه که کد 0 می گیره. (باقیمانده تقسیم بر 7). حال مقدار روز باقیمانده از این مبداء رو حساب می کنی. مثل:
> تاریخ مبداء : 1/1/1370 
> تاریخ مقصد : 11/5/1375 
> محاسبه: 11+5*31+(1370-1375) = Days
> (باقیمانده تقسیم بر 7) code = Days mod 7
> 
> فقط باید برای سالهای کبیسه چهار ساله : Days =Days+(1375-1370) mod 4
> 
> فقط باید برای سالهای کبیسه پنج ساله : Days =Days+(1375-1370) mod 16
> ...


به خاطر توضيحات مفيدتان بسيار سپاسگذارم . :چشمک:

----------


## aminjo0o0on

> سلام، چرا خودت نمی نویسی. این خیلی راحته. 1 فروردین یه سال بعد از یه سال کبیسه رو به عنوان مبداء خودت در نظر می گیری. مثلاً اگه 1 فروردین اون سال با دوشنبه شروع بشه بهش کد 1 می دی و  سه شنبه کد 2  و همین طور تا شنبه که کد 6 و یکشنبه که کد 0 می گیره. (باقیمانده تقسیم بر 7). حال مقدار روز باقیمانده از این مبداء رو حساب می کنی. مثل:
> تاریخ مبداء :   1/1/1370   
> تاریخ مقصد :   11/5/1375 
> محاسبه:   11+5*31+(1370-1375) =  Days
>  (باقیمانده تقسیم بر 7)   code = Days mod 7
> 
> فقط باید برای سالهای کبیسه چهار ساله :  Days =Days+(1375-1370) mod 4
> 
> فقط باید برای سالهای کبیسه پنج ساله :  Days =Days+(1375-1370) mod 16
> ...


با عرض سلام و خسته نباشید

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

----------


## Zahed2008

سلام دوست عزيز، اصول کار بر اساس باقيمانده بر 7 هستش.
در سالهاي معمولي:   
code = 365 mod 7 = 1
اين يعني اينکه به ازاي هر سال فقط يه روز تغيير در روزهاي هفته داريم(يعني اگه امسال اول فروردين دوشنبه باشه، سال بعد، اول فروردين سه شنبه خواهد بود.)
اين قانون هميشه درسته فقط اشکال زماني پيش مياد که سال کبيسه داشته باشيم، يعني:
code = 366 mod 7 = 2
حالا اگه هر 4 سال يه بار سال کبيسه چهار ساله و هر 21 سال يه بار کبيسه 5 ساله داشته باشيم، بايد يه دونه به کد بدست اومده اضافه کنيم و دوباره باقيمانده رو محاسبه کنيم.
کد صحیح رو بصورت زیر می نویسم(کد قبلی زیاد دقیق نبود):

تاريخ مبداء : 1/1/1370 (روز چهارشنبه)
تاريخ مقصد : 11/9/1388
محاسبه: 11+30*2+6*31+(1370-1388) = Days
n = (1388-1370-1) div 21 (تقسيم عدد صحیح بر 21)
 m = (1388-1370-1-n) div 4ِ (تقسيم عدد صحیح بر 4 با کسر کبیسه پنج ساله)
(باقيمانده تقسيم بر 7) code = (Days+m+n) mod 7
code = 2 : يعني که تاريخ مقصد برابر روز پنج شنبه هستش.

----------

