![]() |
|
هل من امكانية في استعمال التأريخ الهجري ؟ - نسخة قابلة للطباعة +- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum) +-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3) +--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15) +--- الموضوع : هل من امكانية في استعمال التأريخ الهجري ؟ (/showthread.php?tid=52) |
هل من امكانية في استعمال التأريخ الهجري ؟ - محمد عبد العزيز - 25-02-2008 بسم الله الله الرحمن الرحيم يمكنك استعمال كل من EncodeDate / DecodeDate / DateToStr / StrToDate لتحصل على النتيجة التي تريد والسلام عليكم ورحمة الله هل من امكانية في استعمال التأريخ الهجري ؟ - مهدي - 25-02-2008 و عليكم السلام و رحمة الله بالإضافة إلى الوظيفة function الرائعة التي أعطانيها xinofix كود : ربما وجدت لك شيء مفيدا من منتدى الفريق العربي للبرمجة
كود PHP:
function GregToHijri(Date: TDateTime): String;
var
GregDate: TSystemTime;
HigriText: array[0..127] of Char; {For Hijra date}
begin
DateTimeToSystemTime(Date, GregDate);
GetDateFormat(0, DATE_USE_ALT_CALENDAR, @GregDate, 'dd/MM/yyyy', HigriText, 128);
Result := StrPas(HigriText);
end;التي تعطيني تاريخ بشكل 1429-02-18 أضيف الوظيفة التالية كود : function StrHijriDate(MDate: TDate): string;
var HDate, Day, Month, Year : String;
begin
HDate:=GregToHijri(MDate);
Day:=Copy(HDate,1,2);
Month:=Copy(HDate,4,2);
Year:=Copy(HDate,7,4);
Result := Year+'-'+Month+'-'+Day;
end;التي تجعل الأيام مكان السنوات و السنوات مكان الأيام بالشكل التالي 18-02-1429 الذي يسمح بالترتيب التاريخ المكتوبة في حقل string فلا أحتاج إلى DecodeDate لأن الوظيفة الأولى تعطيني تاريخا بشكل string هل من امكانية في استعمال التأريخ الهجري ؟ - مهدي - 25-02-2008 و بدمج الوظيفة الثانية في الأولى نحصل على الوظيفة النهائية كود : function GregToHijri(Date: TDateTime): String;
var
GregDate: TSystemTime;
HigriText: array[0..127] of Char; {For Hijra date}
HDate : String;
begin
DateTimeToSystemTime(Date, GregDate);
GetDateFormat(0, DATE_USE_ALT_CALENDAR, @GregDate, 'dd/MM/yyyy', HigriText, 128);
HDate:= StrPas(HigriText);
Result := Copy(HDate,7,4)+'-'+Copy(HDate,4,2)+'-'+Copy(HDate,1,2);
end;هل من امكانية في استعمال التأريخ الهجري ؟ - مهدي - 25-02-2008 أو الوظيفة التالية كود : function GregToHijri(Date: TDateTime): String;
var
GregDate: TSystemTime;
HigriText: array[0..127] of Char; {For Hijra date}
HDate : String;
begin
DateTimeToSystemTime(Date, GregDate);
GetDateFormat(0, DATE_USE_ALT_CALENDAR, @GregDate, 'yyyy/MM/dd', HigriText, 128);
Result := StrPas(HigriText);
end;و ذلك بتغيير شكل التاريخ من 'dd/MM/yyyy' إلى 'yyyy/MM/dd' هل من امكانية في استعمال التأريخ الهجري ؟ - merouane - 25-02-2008 السلام عليكم حسنا يبدو أن أخونا مهدي قد وجد ضالته فلماذا لا يقدم لنا في دروس للمبتدئين - درس عن التحويل من الميلادي إلى الهجري و العكس.. لإثراء المخزون المعرفي و ايضا لما لا تحاول أن تضع تصورا و خوارزمية التحويل ربما في المستقبل ننشأ مكونا من مجهودنا الخاص أيضا هي فكرة لما لا يكون لدينا برامج و مكونات من تجاربنا و دروسنا تحياتي
هل من امكانية في استعمال التأريخ الهجري ؟ - مهدي - 25-02-2008 كود : أيضا هي فكرة لما لا يكون لدينا برامج و مكونات من تجاربنا و دروسنافكرة جيدة و لي إضافة جديدة للكود يمكن تغيير شكل التاريخ ابتداءا من الوظيفة GetDateFormat و هذه أمثلة 'dddd dd MMMM yyyy' = الاثنين 18 صفر 1429 'MMMM yyyy' = صفر 1429 'dddd' = الاثنين 'MMMM' = صفر هل من امكانية في استعمال التأريخ الهجري ؟ - merouane - 02-03-2008 السلام عليكم وجدت طريقة أخرى بالنسبة لعرض التاريخ على شكل 'yyyy/MM/dd' وذلك باستعمال TFormatSettings ، وهنا تفصيلها من Delphi help [SIZE="2"][INDENT][INDENT] Unité[INDENT]SysUtils[/INDENT] [/INDENT][/INDENT][/SIZE]Syntaxe Delphi[INDENT]type[/INDENT] [INDENT][INDENT]TFormatSettings =record[/INDENT][/INDENT][INDENT][INDENT][INDENT]CurrencyFormat : Byte; NegCurrFormat : Byte; ThousandSeparator : Char; DecimalSeparator : Char; CurrencyDecimals : Byte; DateSeparator : Char; TimeSeparator : Char; ListSeparator : Char; CurrencyString : string; ShortDateFormat : string; LongDateFormat : string; TimeAMString : string; TimePMString : string; ShortTimeFormat : string; LongTimeFormat : string; ShortMonthNames : array[1..12] of string; LongMonthNames : array[1..12] of string; ShortDayNames : array[1..7] of string; LongDayNames : array[1..7] of string; TwoDigitYearCenturyWindow : Word [/INDENT][/INDENT][/INDENT] [INDENT][INDENT]end;[/INDENT][/INDENT] كود : procedure TForm1.Button1Click(Sender: TObject);
var
MySettings: [color=Blue]TFormatSettings[/color];
s: string;
d: TDateTime;
begin
GetLocaleFormatSettings(GetUserDefaultLCID, MySettings); // أولا لمعرفة المعلومات المحلية
MySettings.DateSeparator := '-'; // القيام بما نريد
MySettings.TimeSeparator := ':';
MySettings.ShortDateFormat := 'mm-dd-yyyy';
MySettings.ShortTimeFormat := 'hh:nn:ss';
s := DateTimeToStr(Now, MySettings); // استعمالها في عملية التحويل إلى نص
ShowMessage(s);
d := StrToDateTime(s, MySettings);
ShowMessage(DateTimeToStr(d, MySettings));
end;النتيجة ![]() تحياتي
هل من امكانية في استعمال التأريخ الهجري ؟ - مهدي - 02-03-2008 أحسنت و لكن الكود يقوم بتحويل التاريخ الميلادي فقط فهل ممكن تجريب التاريخ الهجري ؟ و الإجراء GetLocaleFormatSettings غير موجود في الإصدارات الأقل من دلفي 7. هل من امكانية في استعمال التأريخ الهجري ؟ - hamada_moh77 - 21-12-2008 السلام عليكم اشكر الاخ الفاضل الذي قام بهذا المجهود الجيد في هذه الاداة الاكثر من رائعة ولكني كمحلل نظم وجدت اخطأ كثيرة جدا بها وبالتالي تعتبر اداة بها نواقص تؤدي الي عدم الاعتماد عليها 1- لابد من تغيير نظام الوندوز الي هجري حتي تعمل دالة GregToHijri 2- في بعض الاشهر الخاصة بسنوات مختلفة نجد ان الدالة HijriToGreg تقوم باضافة يوم تلقائي فعلي سبيل المثال قم بتحويل يوم 13/5/1429 ستجد انه تم التحويل الي التاريخ الميلادي 19/5/2008 وعند تحويل التاريخ الميلادي الي هجري مرة اخري باستخدام دالة GregToHijri ستجد ان التاريخ الهجري الذي تم ادخالة من قبل زاد يوما واصبح 14/5/1429 وهذا بالطبع يعتبر مشكلة كبيرة لأن التاريخ دائما حقل مهم وفعال في البحث اثناء عمل قاعدة البيانات انا ارجع ذلك لخطأ في الحسابات ولايمكن علاجة كما هو مقدم في الدالة عذرا ولكن هناك الكثير من الاخطأ ولكنني احببت فقط ان اوضح اهم خطأين حتي ابين لمستخدم الاداة انها فعلا غير فعالة في البرامج التي تحتاج الكثير من الدقة :mad: :confused: هل من امكانية في استعمال التأريخ الهجري ؟ - computer50 - 03-04-2009 السلام عليكم ورحمة الله وبركاته مساكم/صبحكم الله بالخير انا استعمل دلفي 2009 وقاعدة بيانات sql 2005 وحاولت اركب الكمبوننت ولكن ما استطعت!!!! ياريت احد الشباب يشرح كيفية تركيبه شاكر مقدما |