المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : هل من امكانية في استعمال التأريخ الهجري ؟


مهدي
24-02-2008, 04:44 PM
السلام عليكم و رحمة الله
هذه أول مشاركة لي في هذا المنتدى أسأل الله له و لمشرفيه التوفيق.
أستهل مشاركتي بالسؤال التالي:
هل من امكانية لإستعمال التأريخ الهجري لإنشاء تطبيقات و قواعد البيانات بالدلفي ؟

xinofix
24-02-2008, 05:18 PM
أظن ان هناك مكون مطور من قبل أحد المبرمجين العرب وآخر من قبل احد الإيرانيين
http://www.farsicomponents.com/shdatesolutions.htm
...
يمكنك أن تقوم بعملية تحويل بدلفي غن كنت تعلم القاعدة

مهدي
24-02-2008, 07:21 PM
بارك الله فيك أخي الكريم xinofix
**** أن أنبه على أن المطور الإيراني لا يستعمل التأريخ الهجري فهو يستعمل تأريخا لست أدري لأي رمز و لأي ديانة يرمز فالتاريخ 24/02/2008 يوافق 05/12/1386 بتأريخه
و **** أيضا الإشارة إلى أن قواعد بيانات بارادوكس مثلا، لا تقبل اليوم 30 من شهر صفر
أتمنى أن أجد الكود الذي يساعدني على قراءة التأريخ الهجري من نظام التشغيل الويندوز لأن هذا الأخير يدعم التأريخ الهجري.
و ****ا أن تعطيني الرابط لمكون المطور العربي إن أمكن

xinofix
24-02-2008, 09:22 PM
لم أتمكن من تذكر الموقع المطلوب ولكن ربما تجد هنا ظالتك
http://cc.codegear.com/Item/18881
ولكن مالسبب في إلحاحك عن الهجري؟
ربما تمكنا من مساعدتك

xinofix
24-02-2008, 09:25 PM
ربما وجدت لك شيء مفيدا من منتدى الفريق العربي للبرمجة
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;
:D

merouane
24-02-2008, 11:52 PM
السلام عليكم

ريما ينفعك ما قام به : Kifah R. Najem

كائن لتحويل التاريخ من هجري إلى ميلادي و من ميلادي إلى هجري.

متوافق مع قواعد البيانات.

كما يمكن استخدام إجراءات التحويل مباشرة بدون استخدام الكائنات و هي:

function GregToHijri(Date: TDateTime): String;

function HijriToGreg(Date: String): TDateTime;

function ReverseHijri(Date: String): String;

المؤلف: Kifah R. Najem
السعر: 0.00 $
التاريخ Sunday 12, August 2001
المرفق: 137_thijridatetime

هناك أيضا Adeeb Rantawi بتاريخ 04 جوان 2000
المرفق: 11_hijridate

****ا أن تكون المشاركة مفيدة

تحياتي :)

مهدي
24-02-2008, 11:57 PM
ما شاء الله بارك الله فيك أخي على الكود الأخير
أشكرك جزيل الشكر
أما سبب إلحاحي هو حب الإطلاع و ما لعلاقة التأريخ الهجري بالإقتصاد الإسلامي كعلاقته بالزكاة مثلا
أسأل الله لك و للمنتدى التوفيق و السداد

مهدي
25-02-2008, 12:06 AM
أشكرك أخي مروان على المكون و جزاك الله خيرا
لكن يبقى لدي إشكال مع قاعدة البيانات لأنها لا تقبل التاريخ 30 من شهر صفر

B.M.AbdelAziZ
25-02-2008, 12:44 AM
بسم الله الرحمن الرحيم

يبقى لدي إشكال مع قاعدة البيانات لأنها لا تقبل التاريخ 30 من شهر صفر
غير نوع الحقل من تاريخ الى نص String
وتعامل مع النص كانه تاريخ فقط

والسلام عليكم ورحمة الله

مهدي
25-02-2008, 12:15 PM
و عليكم السلام و رحمة الله

غير نوع الحقل من تاريخ الى نص String
وتعامل مع النص كانه تاريخ فقط


حقول string لا تحافظ على ترتيب الأيام إلا إذا قمت بعملية Decodedate ووضعت الأيام مكان السنوات و السنوات مكان الأيام.

أنا **** أن أتأكد من عدم وجود أي قواعد بيانات تفي بالغرض حتى ألجأ لهذه الطريقة.

B.M.AbdelAziZ
25-02-2008, 02:54 PM
بسم الله الله الرحمن الرحيم
يمكنك استعمال كل من
EncodeDate / DecodeDate / DateToStr / StrToDate
لتحصل على النتيجة التي تريد
والسلام عليكم ورحمة الله

مهدي
25-02-2008, 04:59 PM
و عليكم السلام و رحمة الله

بالإضافة إلى الوظيفة 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, 06:18 PM
و بدمج الوظيفة الثانية في الأولى نحصل على الوظيفة النهائية
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, 06:31 PM
أو الوظيفة التالية

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, 08:13 PM
السلام عليكم

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

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

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

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

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

تحياتي :)

مهدي
25-02-2008, 10:50 PM
أيضا هي فكرة لما لا يكون لدينا برامج و مكونات من تجاربنا و دروسنا

فكرة جيدة و لي إضافة جديدة للكود

يمكن تغيير شكل التاريخ ابتداءا من الوظيفة GetDateFormat و هذه أمثلة

'dddd dd MMMM yyyy' = الاثنين 18 صفر 1429

'MMMM yyyy' = صفر 1429

'dddd' = الاثنين

'MMMM' = صفر

merouane
02-03-2008, 04:59 AM
السلام عليكم

وجدت طريقة أخرى بالنسبة لعرض التاريخ على شكل 'yyyy/MM/dd'

وذلك باستعمال TFormatSettings ، وهنا تفصيلها من Delphi help

UnitéSysUtils

Syntaxe Delphitype
TFormatSettings =recordCurrencyFormat : 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

end;


procedure TForm1.Button1Click(Sender: TObject);
var
MySettings: TFormatSettings;
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;

النتيجة

http://up102.arabsh.com/my/6059ae0.png


تحياتي :)

مهدي
02-03-2008, 04:37 PM
أحسنت

و لكن الكود يقوم بتحويل التاريخ الميلادي فقط فهل ممكن تجريب التاريخ الهجري ؟

و الإجراء GetLocaleFormatSettings غير موجود في الإصدارات الأقل من دلفي 7.

hamada_moh77
21-12-2008, 07:10 AM
السلام عليكم اشكر الاخ الفاضل الذي قام بهذا المجهود الجيد في هذه الاداة الاكثر من رائعة ولكني كمحلل نظم وجدت اخطأ كثيرة جدا بها وبالتالي تعتبر اداة بها نواقص تؤدي الي عدم الاعتماد عليها

1- لابد من تغيير نظام الوندوز الي هجري حتي تعمل دالة GregToHijri
2- في بعض الاشهر الخاصة بسنوات مختلفة نجد ان الدالة HijriToGreg تقوم باضافة يوم تلقائي فعلي سبيل المثال قم بتحويل يوم 13/5/1429 ستجد انه تم التحويل الي التاريخ الميلادي 19/5/2008 وعند تحويل التاريخ الميلادي الي هجري مرة اخري باستخدام دالة GregToHijri ستجد ان التاريخ الهجري الذي تم ادخالة من قبل زاد يوما واصبح 14/5/1429 وهذا بالطبع يعتبر مشكلة كبيرة لأن التاريخ دائما حقل مهم وفعال في البحث اثناء عمل قاعدة البيانات
انا ارجع ذلك لخطأ في الحسابات ولايمكن علاجة كما هو مقدم في الدالة

عذرا ولكن هناك الكثير من الاخطأ ولكنني احببت فقط ان اوضح اهم خطأين حتي ابين لمستخدم الاداة انها فعلا غير فعالة في البرامج التي تحتاج الكثير من الدقة :mad: :confused:

computer50
03-04-2009, 06:38 PM
السلام عليكم ورحمة الله وبركاته

مساكم/صبحكم الله بالخير

انا استعمل دلفي 2009 وقاعدة بيانات sql 2005 وحاولت اركب الكمبوننت ولكن ما استطعت!!!!

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


شاكر مقدما

Dr.MOT
04-04-2009, 04:22 AM
السلام عليكم

شرح فلاشي لتثبيت مكونات دلفي (http://www.delphi4arab.com/forum/showthread.php?t=490)

somayamony
04-05-2009, 09:34 PM
الحمد لله قمت بعمل جدول فيه التواريخ والبيانات للاشهر وعن طريق الكود يستطيع البرنامج إستخراج أي تاريخ ميلادي إلى هجري ومن هجري إلى ميلادي بدون إستخدام الفانكشن الجاهزة ولكن الحمد لله عملتها

ممكن اذا سمحت تقول عملتها ازاي لإني استخدمت الدالة المسبق شرحها و لكنها لاتحول اعطيها التاريخ الحالي في صورة 5/4/2009 و ترجع النتيجة 04/05/2009 ممكن حد يساعدني ضروري