ورود

View Full Version : سوال: تنظیم تاریخ ویندوز با دلفی



mahian90
دوشنبه 07 شهریور 1390, 23:56 عصر
سلام دوستان عزیز

پیشاپیش عید سعید فطر رو بهتون تبریک میگم.

من تابعی می خوام که تاریخی که توسط کاربر داده میشه رو روی ویندوز ست کنه. البته این رو پیدا کردم ولی مشکلش اینکه ساعت ویندوز رو هم تغییر میده و به ساعت 00:00:00 تبدیل میکنه


procedure SetDateTime(Year, Month, Day: Word);
var NewDateTime: TSystemTime;
begin
FillChar(NewDateTime, SizeOf(NewDateTime), #0);
NewDateTime.wYear := Year;
NewDateTime.wMonth := Month;
NewDateTime.wDay := Day;
SetLocalTime(NewDateTime);
end;

راستی اگه هم بشه تاریخ امروز رو کاربر بوسیله کامپوننت Solar Calendar Package وارد کنه که عالیه.

ممنون میشم پاسخ بدهید.

عقاب سیاه
سه شنبه 08 شهریور 1390, 00:09 صبح
ببخشید دخالت می کنم ولی به نظرم:
اگه قیل از ست، ساعت ویندوز را بگیرید و زمان ساعت این متغیر NewDateTime را با اون(ساعت ویندوز) تنظیم کنید این مشکل هم حل شه!!

BORHAN TEC
سه شنبه 08 شهریور 1390, 14:48 عصر
از کد زیر استفاده کنید:
procedure SetDate(value: TDateTime);
var
systime: TSystemTime;
d, m, y: word;
h, min, s, ms: word;
begin
DecodeDate(value, y, m, d);
DecodeTime(Now, h, min, s, ms);
systime.wday := d;
systime.wmonth := m;
systime.whour := h;
systime.wminute := min;
systime.wsecond := s;
systime.wmilliseconds := ms;
systime.wyear := y;
SetLocalTime(systime);
end;

procedure TForm3.Button1Click(Sender: TObject);
var
myDate: TDateTime;
begin
myDate := Date;
myDate := EncodeDate(2010,9,17);
SetDate(myDate);
ShowMessage(DateToStr(myDate));
end;

mahian90
چهارشنبه 09 شهریور 1390, 00:18 صبح
سلام ممنون از کدی که گذاشتی

من می خوام طوری باشه که کاربر تاریخ رو به شمسی وارد کنه و بعد از تبدیل تاریخ به میلادی اونو در سیستم ذخیره کنه. برای تبدیل تاریخ شمسی به میلادی مشکل ندارم اما تو ست کردن اون تبدیل مشکل دارم. چون بعد از تبدیل فرمت تاریخ به صورت 2011/09/01 در میاد ولی برای ست کردن تاریخ باید تاریخ به فرمت 2011,09,01 باشه.

برای این مشکل چکار کنم.

سورس رو هم گزاشتم یه نگاهی بهش بنداز

عقاب سیاه
چهارشنبه 09 شهریور 1390, 10:18 صبح
من دوباره فوضولیم گرفت!
باز هم ببخشید فضولی می کنم و پا تو کفش بزرگان می کنم ها !!!

می گم نیشه با تایع Pos محل "/" را بجورید و با تابع StuffStrin با "," جایگزین کنید؟؟؟

-تابع دومی در یونیت StrUtils قرار دارد!

mahian90
چهارشنبه 09 شهریور 1390, 11:44 صبح
من دوباره فوضولیم گرفت!
باز هم ببخشید فضولی می کنم و پا تو کفش بزرگان می کنم ها !!!

می گم نیشه با تایع Pos محل "/" را بجورید و با تابع StuffStrin با "," جایگزین کنید؟؟؟

-تابع دومی در یونیت StrUtils قرار دارد!


اختیار دارید دوست عزیز.

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

سعید صابری
چهارشنبه 09 شهریور 1390, 12:35 عصر
سلام ممنون از کدی که گذاشتی

من می خوام طوری باشه که کاربر تاریخ رو به شمسی وارد کنه و بعد از تبدیل تاریخ به میلادی اونو در سیستم ذخیره کنه. برای تبدیل تاریخ شمسی به میلادی مشکل ندارم اما تو ست کردن اون تبدیل مشکل دارم. چون بعد از تبدیل فرمت تاریخ به صورت 2011/09/01 در میاد ولی برای ست کردن تاریخ باید تاریخ به فرمت 2011,09,01 باشه.

برای این مشکل چکار کنم.

سورس رو هم گزاشتم یه نگاهی بهش بنداز


برای جایگزینی , به جای / میتونی از تابع زیر استفاده کنی



ReplaceStr('2010/05/05','/',')


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



var
Da : TDateTime;

begin
da := StrToDate('12/08/2010');
ShortDateFormat := ' dd,mm,yyyy';

ShowMessage(DateToStr(da));

BORHAN TEC
پنج شنبه 10 شهریور 1390, 10:03 صبح
لطفاً کلاس و یا تابعی که از آن برای تبدیل تاریخ شمسی به میلادی استفاده می کنید را ضمیمه کنید. در ضمن فایلی که رد بالا ضمیمه کرده اید ویروسی است.

mahian90
پنج شنبه 10 شهریور 1390, 19:50 عصر
لطفاً کلاس و یا تابعی که از آن برای تبدیل تاریخ شمسی به میلادی استفاده می کنید را ضمیمه کنید. در ضمن فایلی که رد بالا ضمیمه کرده اید ویروسی است.

سلام ممنون آقای شاهین

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

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

مرسی

BORHAN TEC
شنبه 12 شهریور 1390, 13:05 عصر
فقط کافی بود تا کمی راهنمای مربوط به TFarDate رو می خوندید. به هر حال می توانید از کد زیر استفاده کنید:
uses UfarsiDate;

procedure SetDate(value: TDateTime);
var
systime: TSystemTime;
d, m, y: word;
h, min, s, ms: word;
begin
DecodeDate(value, y, m, d);
DecodeTime(Now, h, min, s, ms);
systime.wday := d;
systime.wmonth := m;
systime.whour := h;
systime.wminute := min;
systime.wsecond := s;
systime.wmilliseconds := ms;
systime.wyear := y;
SetLocalTime(systime);
end;

procedure TForm3.Button1Click(Sender: TObject);
var
FarDate: TfarDateTime;
begin
FarDate := TFarDate.farEncodeDate(
StrToInt(Edit1.Text),
StrToInt(Edit2.Text),
StrToInt(Edit3.Text)
);

SetDate(TFarDate.ShamsiToMilady(FarDate));
end;

mahian90
یک شنبه 13 شهریور 1390, 11:20 صبح
از همه دوستان عزیز که کمک کردند که این تاپیک به نتیجه برسه واقعا ممنونم.
(http://barnamenevis.org/member.php?75214-%D8%B4%D8%A7%D9%87%DB%8C%D9%86-%D8%B9%D8%B4%D8%A7%DB%8C%D8%B1%DB%8C)

tadeh2010
جمعه 13 آبان 1390, 17:57 عصر
سلام
مشکل من احتمال زیاد از دید شما بسیار راحت باشد
ولی خیلی وقته پروژه من رو به کل خوابونده
در رابطه با فرمت تاریخ در ویندوزها و سیستمهای مختلف می باشد
یعنی من توی سیتم خودم فرمت تاریخ را فارسی کرده ام و از کامپوننت معروف همین سایت که آقای خرسندی برای دلفی ساخته اند استفاده کردم ولی وقتی در یک سیستم دیگه که فرمت تاریخش متفاوت است برنامه اجرا می شود همه جا error می دهد چه کار بکنم؟
لطفا کمکم بکنید ممنون می شوم با استفاده از یاهو مسنجر بهم اطلاع بدهید
چون شاید شما همینجا بهم راه حل را بگوئید ولی من با این سایت به درستی آشنا نیستم و نمی دونم پاسخ شما را کجا ببینم
متشکرم
tadeh2000@yahoo.com

MOJTABAATEFEH
جمعه 13 آبان 1390, 20:22 عصر
دوست عزیز برای تبدیل تاریخ از فایل ضمیمه استفاده نمایید که در جاهای مختلف بدرستی عمل تبدیل رو انجام میده و بعد باکد زیر میتوانید زمان رو ست کنید
در ضمن جهت دیدن عملکردتان در این سایت از بخش (پرونده شما) بالای صفحه سمت چپ استفاده نمایید


procedure TForm1.Button1Click(Sender: TObject);
var
NewTime: TSystemTime;
begin
FillChar(NewTime, sizeof(NewTime), #0);
NewTime.wYear := 2000;
NewTime.wMonth := 8;
NewTime.wDay := 28;
NewTime.wHour := 0;
NewTime.wMinute := 0;
NewTime.wSecond := 0;
NewTime.wMilliseconds := 0;

SetLocalTime(NewTime);
end;




موفق باشید