تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[vb6.0] كيف استخدم هذه الخوارزمية في برنامجي نامل المساعدة العاجله؟
#1
Question 
الاخوة الكرام
السلام عليكم ورحمة وبركاته
الذكاء الصناعي كتب لي هذه الخوارزمية تحويل التاريخ الميلادي الى تاريخ هجري  



السؤال هنا 
كيف استخدم هذه الخوارزمية في برنامجي نامل المساعدة العاجله؟

كود :
Function GregorianToUmmAlQura(ByVal gDay As Integer, ByVal gMonth As Integer, ByVal gYear As Integer) As Variant

   ' إنشاء مصفوفة لحفظ التاريخ الهجري
   Dim hDate(2) As Integer
   
   ' إنشاء مصفوفة ثنائية لحفظ جدول المعادلات
   ' كل صف يحتوي على خمسة أعمدة: رقم الشهر الهجري، رقم الشهر الميلادي، رقم السنة الميلادية، عدد أيام الشهر، فارق الأيام بين التاريخ الميلادي والهجري
   Dim table(1749, 4) As Integer
   
   ' إضافة قيم جدول المعادلات
   table(0, 0) = 1: table(0, 1) = 7: table(0, 2) = 1937: table(0, 3) = 29: table(0, 4) = -11237
   table(1, 0) = 2: table(1, 1) = 8: table(1, 2) = 1937: table(1, 3) = 30: table(1, 4) = -11208
   table(2, 0) = 3: table(2, 1) = 9: table(2, 2) = 1937: table(2, 3) = 29: table(2, 4) = -11178
   ' ... وهكذا حتى نهاية الجدول
   
   ' حساب رقم الشهر الميلادي منذ يناير سنة 1900
   Dim gMonthNumber As Long
   gMonthNumber = DateDiff("m", #1/1/1900#, DateSerial(gYear, gMonth, gDay))
   
   ' حساب رقم الشهر الميلادي منذ يوليو سنة 1937 (بداية جدول المعادلات)
   Dim gMonthNumberFromTableStart As Long
   gMonthNumberFromTableStart = gMonthNumber - DateDiff("m", #1/1/1900#, #7/1/1937#)
   
   ' البحث في الجدول عن الصف المناسب للتاريخ الميلادي المدخل
   Dim i As Integer
   For i = 0 To 1749
       If gMonthNumberFromTableStart = table(i, 1) + (table(i, 2) - 1937) * 12 Then
           ' تحديد رقم الشهر الهجري
           hDate(1) = table(i, 0)
           ' تحديد رقم السنة الهجرية
           hDate(2) = 1356 + i \ 12
           ' تحديد رقم اليوم الهجري
           hDate(0) = gDay + table(i, 4)
           ' التحقق من عدم تجاوز رقم اليوم عدد أيام الشهر
           If hDate(0) > table(i, 3) Then
               hDate(0) = hDate(0) - table(i, 3)
               hDate(1) = hDate(1) + 1
               If hDate(1) > 12 Then
                   hDate(1) = 1
                   hDate(2) = hDate(2) + 1
               End If
           End If
           Exit For ' الخروج من حلقة التكرار بعد إيجاد الصف المناسب
       End If
   Next i
   
   ' إرجاع التاريخ الهجري كمصفوفة
   GregorianToUmmAlQura = hDate
   
End Function
نامل المساعدة وجزكم الله خيراً
إذا ضاقت بك الأحوال يوماً     فَثِقْ بالواحِدِ الفَرْدِ العَلِيِّ
الرد }}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
Question [vb6.0] كيف احفظ الخيارات التي في القائمة في قاعدة البيانات نامل المساعدة في المثال المرفق ؟ Microformt 1 342 29-11-24, 04:05 AM
آخر رد: justforit
  [vb6.0] كيف يمكن إخفاء عمود رقم الصنف و إظهاره برمجياً نامل المساعدة في المثال التالي ؟ Microformt 2 707 19-11-23, 10:49 PM
آخر رد: Microformt
  [vb6.0] ريد كود طيع التقرير نسختين علماً انني استخدم برنامج Active Report ؟ Microformt 1 684 12-11-23, 05:05 PM
آخر رد: Microformt
Question [vb6.0] كيف اجعل تقرير برنامجي تكون السجلات ملونه مثل الذي في الصورة التأليه ؟ Microformt 0 521 29-10-23, 07:37 PM
آخر رد: Microformt
Question [vb6.0] نامل المساعدة في المثال المرفق يوجد مشكلة في إضافة رقم الصنف الى قاعدة البيانات لا اع Microformt 1 483 23-10-23, 12:11 AM
آخر رد: Taha Okla
Question [vb6.0] هل هناك ادوات جديده يمكن استخدمها في تصميم برنامجي بدل ادوات فجوال البيسك ؟ Microformt 0 406 21-10-23, 07:34 PM
آخر رد: Microformt
  كيف يمكن تشغيل برنامجي على اكثر من جهاز بنفس الوقت princeofislam 1 563 14-10-23, 08:18 PM
آخر رد: princeofislam
  اخوانى الاحباب ارجو المساعدة فى كود النسخ واللصق mhareek 0 649 15-07-23, 01:58 PM
آخر رد: mhareek
  [vb6.0] المساعدة في تشغيل استعلام الحاقي في تبويب الاستعلامات في قاعدة بيانات اكسيس من واجهة وادي العوضي 6 1,042 09-07-23, 12:44 AM
آخر رد: وادي العوضي
  [vb6.0] المساعدة في تحويل كود بلغة ال VB.Net الى لغة ال VB6 وادي العوضي 0 572 16-12-22, 11:24 AM
آخر رد: وادي العوضي

التنقل السريع :


يقوم بقرائة الموضوع: