# Native Code > برنامه نویسی در Delphi > کامپوننت های سایر شرکت ها، و توسعه کامپوننت >  استفاده از ( Shamsi.dll)

## x_man_731

چطور میتوان از فایل shamsi.dll در دلفی استفاده کرد ؟

----------


## Mogtaba2

دوستان سلام :
آقا اگه کسی بلده بگه ما هم نیاز داریم بدونیم
درضمن این فایل دارای توابع کامل تاریخ شمسی و میلادی است . برای استفاده در ویژوال بیسیک مشکلی ندارم چون فایل راهنمایی کاملی دارد 
در ضمن آدرس این فایل : http://www.oxinsoft.com/shamsidll/about.htm

----------


## amir_22

توضیح دهید این فایل چی هست و چه کار میکند

----------


## Mona_r

> دوستان سلام :
> آقا اگه کسی بلده بگه ما هم نیاز داریم بدونیم
> درضمن این فایل دارای توابع کامل تاریخ شمسی و میلادی است . برای استفاده در ویژوال بیسیک مشکلی ندارم چون فایل راهنمایی کاملی دارد 
> در ضمن آدرس این فایل : http://www.oxinsoft.com/shamsidll/about.htm


///////////////////////
ممنون . فایل shamsi.dll رو پیدا کردم

----------


## Mona_r

ممنون . فایل shamsi.dll رو پیدا کردم

----------


## davoodmz

اگر کسی روش کارش را بلده لطفاً بفرماید.

----------


## hp1361

سلام 
اقا اگه یکی راهنمایی کنه چطور از این استفاده کنیم ممنون میشم
در دلفی رو منظورمه

----------


## hp1361

سلام

دوستانی که مایل هستند از این دی ال ال استفاده کنند می تونن به سایت پی سی ورد مراجعه کرده و در قسمت دلفی اموزش اونو ببینن

موفق باشین

----------


## rezvan_DP

با سلام به hp1361 عزیز
می خواستم ازتون تشکر کنم به خاطر راهنمای خوبی که برای رجیستر کردن shamsi.dll تهیه کردید.کامل و جامع بود.

اما مشکل در استفاده از shamsi.dll این هستش که اگر برنامه بخواد رو سیستم های مختلف اجرا بشه باید این dll رجیستر بشه(با regsvr32).
من دنبال این مطلب بودم که چه جوری این کار رو با کد نویسی انجام بدم که با راهنمایی آقای احدی مشکل حل شد.(البته هنوز رو سیستم دیگه ای امتحان نکردم ولی فکر نمی کنم به مشکل بخوره). 
اینم لینک راهنمای رجیستر کردن از طریق کدنویسیhttp://babakdelphi.blogsky.com/

----------


## Mahmood_M

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

یه چیز دیگه :
با یه کد کوچیک از توابع API هم می شه یک DLL رو رجسیتر کرد :
ShellExecute(Handle, 'Open', 'regsrv32', 'Shamsi.dll', '\i', 2);
سوئیچ i\ برای Install و سوئیچ u\ برای UnInstall ...
موفق باشید ...

----------


## Mazaher_md85

در این نوشته کوتاه سعی دارم که توابع استفاده شده در یونیت (Unit) با نام UFarsiDate را توضیح بدم.
این یونیت که به صورت فایل از طریق این سایت قابل دریافت است، برای تبدیل تاریخ میلادی به شمسی و برعکس مورد استفاده قرار می گیرد. از آنجایی که در داخل این فایل هیچ توضیحی وجود ندارد بر آن شدم تا مقاله در مورد کاربرد آن بنویسم. امیدوارم مورد توجه شما قرار گیرد.


*اصل مطلب:*
توجه: در این توابع TfarDateTime با TDateTime هیچ فرقی ندارد. فقط برای اینکه تاریخ فارسی از تاریخ میلادی تمییز داده شود مورد استفاده قرار گرفته است.
از اصلی ترین تابع شروع می کنم:

*تابع MiladyToShamsi:*
Function *MiladyToShamsi* (DTime:tdateTime):TfarDateTime;
تاریخ میلادی در قالب TDateTimeورودی:تاریخ شمسی در قالب TDateTimeخروجی:تبدیل تاریخ میلادی به شمسی در قالب استاندارد دلفی (TDateTime)کاربرد:

*تابع ShamsiToMilady:*
Function *ShamsiToMilady* (DTime:TfarDateTime):TDateTime;
تاریخ شمسی در قالب TDateTimeورودی:تاریخ میلادی در قالب TDateTimeخروجی:تبدیل تاریخ شمسی به میلادی در قالب استاندارد دلفی (TDateTime)کاربرد:

*تابع MiladyToShamsistr:*
Function *MiladyToShamsistr* (DTime:tdateTime):String;
تاریخ میلادی در قالب TDateTimeورودی:تاریخ شمسی در قالب رشته (string) مثلا: 1384/9/29خروجی:تبدیل تاریخ میلادی به شمسی به صورت رشته در زمانهایی که با نوع رشته نیازمندید.کاربرد:

*تابع MiladyToShamsiInt:*
Function *MiladyToShamsiInt* (DTime:tdateTime;var Year,Month,Day:word):TfarDateTime;
تاریخ میلادی در قالب TDateTime !توجه کنید که پارامتر DTime فقط ورودی می باشند.ورودی:تاریخ شمسی هم به صورت به صورت جدا جدا و عددی و هم در قالب TDateTimeخروجی:تبدیل تاریخ میلادی به شمسیکاربرد:

*تابع FarEncodeDate:*
function *FarEncodeDate* (Year, Month, Day: Word): TfarDateTime;
تاریخ شمسی به صورت سال، ماه، روزورودی:تاریخ شمسی در قالب TDateTimeخروجی:تبدیل تاریخ شمسی به میلادی از حالت جداگانه (روز، ماه، سال) به قالب استاندارد دلفی (TDateTime)کاربرد:

*تابع FarDecodeDate:*
procedure *FarDecodeDate* (const DateTime: TDateTime; var Year, Month, Day: Word);
تاریخ شمسی در قالب TDateTimeورودی:تاریخ شمسی به صورت جداگانهخروجی:تبدیل قالب استاندارد دلفی (TDateTime) به مقادیر روز، ماه، سالکاربرد:

*تابع farDateToStr:*
function *farDateToStr* (dateTime:TfarDateTime):string;
تاریخ شمسی در قالب TDateTimeورودی:تاریخ شمسی به صورت رشته (string)خروجی:تبدیل نوع تاریخ شمسی از قالب استاندارد دلفی (TDateTime) به صورت رشته(string)کاربرد:

*تابع farDateTimeToStr:*
function *farDateTimeToStr* (const DateTime: TfarDateTime): string;
تاریخ شمسی در قالب TDateTimeورودی:تاریخ شمسی به صورت رشته (string) همراه با زمانخروجی:در صورتی که نیاز باشد تا هم تاریخ و هم زمان در کنار هم باشند از این تابع استفاده کنید.کاربرد:

*تابع farFormatDateTime:*
function *farFormatDateTime* (const Format: string; DateTime: TfarDateTime): string;
قالب تاریخ خروجی به صورت رشته (مثلا yyyy/mm/dd) و تاریخ شمسی در قالب TDateTimeورودی:تاریخ شمسی در قالب تعیین شدهخروجی:برای اینکه تاریخ را در قالب های مختلف در بیاورید از این تابع استفاده کنید. مثلا 1383:9:29کاربرد:

*تابع farStrToDateDef:*
function *farStrToDateDef* (const S: string; const Default: TfarDateTime): TDateTime;
رشته حاوی تاریخ فارسی و تاریخ پیشفرض برای مواقع بروز خطاورودی:قالب استاندارد دلفی (TDateTime)خروجی:تبدیل رشته (string) به قالب استاندارد دلفی (TDateTime). در صورتی که به علت استاندارد نبودن رشته حاوی تاریخ و بروز خطا، مقدار پارامتر default برگردانده خواهد شد.کاربرد:

*تابع farStrToDate:*
function *farStrToDate* (const S: string): TfarDateTime;
رشته حاوی تاریخ فارسیورودی:قالب استاندارد دلفی (TDateTime)خروجی:تبدیل رشته (string) به قالب استاندارد دلفی (TDateTime).
هشدار: این تابع بسیار حساس می باشد و در صورت درست نبودن رشته ورودی پیغام خطا خواهد داد. حتی به قالب رشته ورودی در ویندوز های مختلف حساس بوده باعث بروز خطا می شود. (مثلا 1383/9/30 ممکن فقط در یک ویندوز برای آن تابع معتبر باشد و ویندوز دیگر با خطا روبرو شوید).
توصیه می شود از رشته هایی که توسط تابع farDateToStr تولید میشود به عنوان ورودی استفاده نمایید.کاربرد:

*تابع farYearOf:*
function *farYearOf* (const AValue: TfarDateTime): Word;
تاریخ شمسی در قالب TDateTimeورودی:سال تاریخ شمسیخروجی:برای استخراج و یا فهمیدن سال از قالب TDateTime مورد استفاده می باشد.کاربرد:

*تابع farMonthOf:*
function *farMonthOf* (const AValue: TfarDateTime): Word;
تاریخ شمسی در قالب TDateTimeورودی:ماه از سالخروجی:برای بدست آوردن ماه مورد استفاده می باشد.کاربرد:

*تابع farWeekOf:*
function *farWeekOf* (const AValue: TfarDateTime): Word;
تاریخ شمسی در قالب TDateTimeورودی:هفته از سالخروجی:برای بدست آوردن هفته جاری در پارامتر ورودی مورد استفاده می باشد.کاربرد:

*تابع farDayOf:*
function *farDayOf*(const AValue: TfarDateTime): Word;
تاریخ شمسی در قالب TDateTimeورودی:روز از ماهخروجی:برای بدست آوردن روز جاری در پارامتر ورودی مورد استفاده می باشد.کاربرد:

*تابع farDayOfTheWeek:*
function *farDayOfTheWeek*(const AValue: TfarDateTime): Word;
تاریخ شمسی در قالب TDateTimeورودی:روز از هفتهخروجی:برای بدست آوردن روز از هفته مورد استفاده می باشد.کاربرد:

*تابع farDecodeDateWeek:*
procedure *farDecodeDateWeek*(const AValue: TfarDateTime; out AYear,AWeekOfYear, ADayOfWeek: Word);
تاریخ شمسی در قالب TDateTimeورودی:سال شمسی ، هفته از سال و روز از هفتهخروجی:تبدیل قالب TDateTime به موارد فوقکاربرد:

*با تشکر از توجه شما*
*مظاهر دیانی* 
*این فایل ضمیمه محتوی یک فایل MultiMedia  مربوط به آموزش کاربرد این Dll است .*

----------


## absent

سلام؛ ظاهراً خیلی دیر رسیدم اما یه یونیت خیلی جالب برای این کار دارم اگه احتیاج دارید پیام بدید براتون بذارم

----------


## narges.ghaedi

سلام
من مشکلی با shamsi.dll دارم انگار تبدیل زیر را اشتباه انجام میده .چرااا؟
 
 march 19 1980  28/12/1358
* march 20 1980  29/12/1359  -> 29/12/1358*
* march 21 1980   2/1/1359   -> 1/1/1359*

----------


## taha_Delphi

بعد از نصب dll با regsrv32

program shamsi;

{$mode objfpc}{$H+}{$AppType GUI}

Uses ComObj, Windows;

Var
  ShamsiClass: Variant;
  ResultDate : String;

begin
  ShamsiClass:=CreateOleObject('ShamsiDLL.ClassShams  i');
  
  ResultDate:=ShamsiClass.Shamsi();
  MessageBox(0, pchar(ResultDate), 'Current Date', 64);
  
  ResultDate:=ShamsiClass.Miladi2Shamsi('2008/03/11');
  MessageBox(0, pchar(ResultDate), '2008/03/11', 64);
  
  ResultDate:=ShamsiClass.Shamsi2Miladi('1386/12/21');
  MessageBox(0, pchar(ResultDate), '1386/12/21', 64);
end.


در انتها می خواستم بگم این دی ال ال تو محاسباتش اشتباه می کنه مثلا تاریخ 11/03/2008رو به اشتباه 20 اسفند 86 نشون میده

----------


## ar_babaali

با این همه تعریف که از این dll در سایت اوکسین آمده ولی من در یک برنامه مهم که با تاریخ سر و کار داشت از آن استفاده کردم ولی در اسفند 86 تاریخ تبدیلی آن اشتباه شد و از تاریخ 2/1/87 به بعد را درست تبدیل کرد. یعنی ند روزی را اشتباه تبدیل می کرد و دلیل آن را هم نمیدانم. می توانید با نصب آن و تغییر تاریخ سیستم خود آنرا تست نمایید.

----------


## saeed_molaali

درسته من هم با اطمينان كامل از اين dll استفاده كردم كه در نهايت جواب نداد و تو محاسباتش اشتباه كرد

----------


## یوسف زالی

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

----------

