delphi4arab منتديات دلفي للعرب
هل من امكانية في استعمال التأريخ الهجري ؟ - نسخة قابلة للطباعة

+- 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)

الصفحات: 1 2 3


هل من امكانية في استعمال التأريخ الهجري ؟ - محمد عبد العزيز - 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

السلام عليكم

حسنا يبدو أن أخونا مهدي قد وجد ضالته

فلماذا لا يقدم لنا في دروس للمبتدئين - درس عن التحويل من الميلادي إلى الهجري و العكس..

لإثراء المخزون المعرفي

و ايضا لما لا تحاول أن تضع تصورا و خوارزمية التحويل ربما في المستقبل ننشأ مكونا من مجهودنا الخاص

أيضا هي فكرة لما لا يكون لدينا برامج و مكونات من تجاربنا و دروسنا

تحياتي Smile


هل من امكانية في استعمال التأريخ الهجري ؟ - مهدي - 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]

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]
[/INDENT][/INDENT][/SIZE]

كود :
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;

النتيجة

[صورة: 6059ae0.png]


تحياتي Smile


هل من امكانية في استعمال التأريخ الهجري ؟ - مهدي - 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 وحاولت اركب الكمبوننت ولكن ما استطعت!!!!

ياريت احد الشباب يشرح كيفية تركيبه


شاكر مقدما