تقييم الموضوع :
  • 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
نامل المساعدة وجزكم الله خيراً
إذا ضاقت بك الأحوال يوماً     فَثِقْ بالواحِدِ الفَرْدِ العَلِيِّ
الرد }}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [vb6.0] كيف يمكن إخفاء عمود رقم الصنف و إظهاره برمجياً نامل المساعدة في المثال التالي ؟ Microformt 2 414 19-11-23, 10:49 PM
آخر رد: Microformt
  [vb6.0] ريد كود طيع التقرير نسختين علماً انني استخدم برنامج Active Report ؟ Microformt 2 376 12-11-23, 05:05 PM
آخر رد: Microformt
Question [vb6.0] كيف اجعل تقرير برنامجي تكون السجلات ملونه مثل الذي في الصورة التأليه ؟ Microformt 0 291 29-10-23, 07:37 PM
آخر رد: Microformt
Question [vb6.0] نامل المساعدة في المثال المرفق يوجد مشكلة في إضافة رقم الصنف الى قاعدة البيانات لا اع Microformt 1 250 23-10-23, 12:11 AM
آخر رد: Taha Okla
Question [vb6.0] هل هناك ادوات جديده يمكن استخدمها في تصميم برنامجي بدل ادوات فجوال البيسك ؟ Microformt 0 231 21-10-23, 07:34 PM
آخر رد: Microformt
  كيف يمكن تشغيل برنامجي على اكثر من جهاز بنفس الوقت princeofislam 1 306 14-10-23, 08:18 PM
آخر رد: princeofislam
  اخوانى الاحباب ارجو المساعدة فى كود النسخ واللصق mhareek 1 416 15-07-23, 02:28 PM
آخر رد: Amir_Alzubidy
  [vb6.0] المساعدة في تشغيل استعلام الحاقي في تبويب الاستعلامات في قاعدة بيانات اكسيس من واجهة وادي العوضي 6 626 09-07-23, 12:44 AM
آخر رد: وادي العوضي
  [vb6.0] المساعدة في تحويل كود بلغة ال VB.Net الى لغة ال VB6 وادي العوضي 0 385 16-12-22, 11:24 AM
آخر رد: وادي العوضي
Question [vb6.0] كيف اعرف رقم الخطاء عند ظهور هذه الرسالة في برنامجي؟ Microformt 0 406 07-10-22, 09:51 PM
آخر رد: Microformt

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


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم