الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

وأخيراً انتهت مشكلة التاريخ

مغلق
بدأه الإبريز في 17 فبراير 2003 · 12 رد · 1,706 مشاهدة · في مراجعة المواضيع
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

ولقد تمت عملية تحويله إلى لغة الدلفي وقد طلب مني أن أخبر الإخوة بتجربة البرنامج وإبداء أي خطأ في عملية التحويل لكي يتسنى له التعديل ومن ثم سيقوم بتوزيع المصدر مفتوحاً ليتمكن الجميع من الاستفادة منه ...

علماً بأنه يقوم بتحويل جميع التواريخ من عام 1420 - 1450 والموافق لتقويم أم القرى من وإلى التاريخ الهجري .....

البرنامج موجود في الرابط التالي

http://www.aldiwan-mag.net/Date.zip

ولأي تفصيل راسل الأخ عبدالرحمن على العنوان التالي

abahsain@gawab.com

#2

الإخوة / حارث وابو هادي بذلا جهد جبار في هذا الموضوع بارك الله فيهما

#3

جربت الملف المذكور لكن لم يعطني نتائج صحيحة في الأعوام قبل 1420 أو بعد 1450 .

#4

نعم الإخوة بذلا ولهما الشكر ولكن المشكلة أن نص البرنامج غير متاح حتى الآن من الإخوة وأتاحه لنا الأخ عبدالرحمن...

أما التواريخ قبل 1420 وبعد 1450 فلن يعطيك بالفعل نتائج صحيحة ولذلك لازلنا في طور البحث والتحري ، فإن كان لديك حل فأتحفنا به بارك الله فيك

بالتوفيق ،،،;)

#5

السلام عليكم

اقتباس
نص البرنامج غير متاح حتى الآن من الإخوة وأتاحه لنا الأخ عبدالرحمن

أي نص تقصد ؟ فإذا كان ما تقصده هو المعادلات الفلكية فلك كل الحق وإن كان ما تقصده الكود الخاص باستخدام تقويم أم القرى فهو موجود بالموقع ومتاح للجميع ولك معلومة على الطاير .. أن تقويم أم القرى عملته من بداية التسعينات يعني قد مضى عليه ما لا يقل عن 9 سنوات .

تحياتي لك وبانتظار خدماتكم على أشد من الجمر .

#6

أولاً أشكرك أخي أبو هادي على ردك ،، والحقيقة أنا قصدت الكود لأني راسلت الأخ عبدالرحمن وعطاني إياه ...

والغريب إني بحثت عن الكود إلي تقول عنه ((( قبل 9 سنوات ))) وما لقيت إلا ملفات DLL وطبعاً هذي ما تقدر تستفيد منها لو بغيت تبرمج على أسمبلي مثلاً أو على ASP أو PHP ....

أنا ممكن أكون ما دورت زين لكن فعلاً أنا محتاج لبرنامج يحول التاريخ من عام 1 إلى مالانهاية :):):)

لكن كل إلي لقيته برناج الأخ عبدالرحمن علشان كذا كتبت لكم هالموضوع من الفرحة لا أكثر ولا يهون الإخوان الموجودين في المنتدى

أنا في انتظار الكود على أحر من الجمر :D:D:D

#7

الأخ الفاضل

لن تجد تقويم أم القرى مفتوح المدة . العملية ليست بالبساطة التي تتخيلها والأسهل منه بكثير التقاويم الهجرية القياسية ومع ذلك لن تراها مفتوحة خوفا من الوقوع في أخطاء النتائج عندما تتباعد الفترات . وأنا أستطيع أن أجزم أنه لا توجد معادلات لوحدها لاستخلاص أي توقيت فلكي وإذا حصلت كما برنامجي الفلكي "تقويم أبو هادي" فلن تعطيك نتائج دقيقة 100% ، حيث يتطلب الموضوع جداول كثيرة وحسابات معقدة وخصوصا في الحصول على معادلات الزمن ( أطوال الشمش والقمر ) .

عموما هذا ملخص من عمل أخي حارث في هذه الوصلة ، تستطيع الحصول على جدول بسيط وكود أسهل منه ولي تجربة في هذا التقويم على لغة الباسكال حيث الجدول عبارة عن ملف dat تم تحويله إلى Object بحيث لا يحتاج لحمل ملف البيانات مع البرنامج . الوصلة :

http://www.arabteam2000.com/vb/showthread....&threadid=17151

تحياتي

#8

أخي أبو هادي

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

طبعا مشكلة هذه الطريقة الكبرى هي عدم إمكانية إضافة سنوات جديدة عند التحويل لـ MDE ، وأود سؤالك ما هي سلبيات هذه الطريقة مقارنة بطريقة الجدول .

#9

السلام عليكم

أخي الكريم حارث

ما عملته أنت لا يفرق عن ما نعمله الآن وقد يكون الفرق ثانية أو ثانيتان لمرة واحدة عند تحميل التقويم من البداية وقد تكون طريقتك تأخذ أكثر حيزا من الذاكرة وخصوصا أنا أحمل بيانات معالجة مبدئيا وبطريقتك سوف تقوم بتحميل البيانات الأساسية أولا بواسطة Array مصفوفة ثم بتحميل البيانات المعالجة بمصفوفة أخرى . وأعتقد أنك وضحت الفرق عندما تحدثت عن عملية إضافة جديدة كيف ستكون عقبة في ملفات الـ mde .

ومحاولتك جيدة في حالة أنك ستستخدم التقويم في لغة برمجة وليس في قاعدة بيانات وفي حالة ما رغب المبرمج كذلك بعدم حمل ملف للبيانات مرافق للبرنامج وبشرط أن لا تكون البيانات كبيرة .

أما محاولتي بتحميل ملف البيانات بشكل Object في الباسكال ولا أعرف أن كانت هذه الطريقة متاحة في اللغات الأخرى في رغبتي في عدم تعرف المستخدمين على البيانات وفكرة عمل تقويم أم القرى آنذاك .

أخوك أبو هادي

#10

في الواقع أشكرك أخي الحبيب على هذا الرد ، ولكن أخالفك الرأي لو سمحت لي ، لأن عملية الحسابات والتحويل لا تأخذ وقتاً طويلاً كما تفضلت ولدي برنامج قديم للتحويل وأظنه يعمل على الفترة ما قبل 1420 هـ وهي من برمجة الأخ ليث السليمان وسريعة وللأسف لم أمتلك التقاويم ما قبل 1420 إلا اليوم فقط وسأجربه وأخبركم بالنتائج ....

لكن أخي الحبيب ، ما معنى قولك " فلن تعطيك نتائج دقيقة 100% " إن كنت تقصد ما قبل 1420 فنعم أما ما بعده وحتى 1450 فلقد جربت البرنامج المرسل وتأكدت منه أنه موافق تماماً للمعمول به في أم القرى حسب كتاب " تقويم أم القرى من عام 1420 إلى 1450 " وهو من مطبوعات الحكومة التابعة لوزارة المالية ....

شكراً لك ولكن في الواقع الموضوع يثري بالمعلومات وأرجو أن لا يبخل علينا أحد بأي معلومة لأن الهدف هو الوصول لحل متكامل ، كما أرجو ممن يعرف الأخ الصالح أن يتحفنا بما عنده عله أن يفيد وأعدكم أن البرنامج سيكون مفتوحاً للجميع بلغة الباسكال والـ ASP حال اكتماله بإذن الله .....

#11

الأخ الإبريز

اقتباس
لأن عملية الحسابات والتحويل لا تأخذ وقتاً طويلاً

لم أتحدث عن السرعة لقد تحدثت عن الذاكرة وحشوها بالبيانات .

وكما أوضحت لك إذا كان البرنامج يعتمد معادلات فليكة 100% فلا يضير أن يكون مفتوح المدة وتحديدها لدليل على محدودية الكود حيث لا يصلح لغيرها . وهذا يحدث تماما مع عمل دالة عامة لها خيارات كثيرة وتؤدي وظائف متعددة ودالة أخرى تؤدي وظيفة واحدة محدودة يكثر بها الثوابت والقيم الجاهزة المجهزة .

اقتباس
ما معنى قولك " فلن تعطيك نتائج دقيقة 100% "

كنت أتحدث فيها عن تقويمي الفلكي والذي يعتمد فيها المعادلات الفلكية 100% وهو جاهز لأي تقويم فلكي سواء كان أم القرى أو العجيرى أو القطري ويتطلب فقط تبديل خط الطول والعرض للمدينة كمكة المكرمة أو الكويت أو الدوحة . وبكل تأكيد لو أردته أن لا يظهر تلك الأخطاء لمنعتها باستخدام If أو بعملية adjustment حتى يرضي مطلبي ولكني أردته أن يكون تقويما فلكيا خالصا ( دون استخدام جداول ) وهنا لا أقصد فيها جداول قاعدة البيانات ولكن أقصد فيها جداول فلكية بها حسابات جاهزة يستفاد منها في المعادلات الفلكية .

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

على يديك أخي العزيز .. حاول أن تراسله فقد استفسرنا منه استفسارا بسيطا أكثر من مرة ولكنه لا يجيب . وعلى ما أتذكر أنه ألمح كذلك أن مصدره هو مدينة الملك عبدالعزيز بجدة .. فياريت من له علاقة طيبة بمدينة الملك عبدالعزيز أن يكرمنا بما عندهم من معلومات مفيدة وخصوصا أنها خرجت عن نطاق المدينة أي خارج أسوار المدينة .

اقتباس
وأعدكم أن البرنامج سيكون مفتوحاً للجميع بلغة الباسكال والـ ASP حال اكتماله بإذن الله .....

نحن بالإنتظار .. وأرجو أن لا يطول الإنتظار .

مع تحياتي

#12

أستاذنا أبو هادي

ما قصدته هو ما في المثال المرفق

وأعتذر عن التأخر في إرفاقه حيث لم يكن في جهاز البيت وإنما في جهاز آخر لم يكن قريبا مني وقتها .

طبعا هي أكثر بطئا من الطريقة التي نتبعها حاليا ، لكنها مجرد فكرة خطرت لي منذ مدة وحاولت تجربتها وقتها وكانت النتيجة هذا المثال (وقد أضفت إليه الأعوام من 1431 - 1450) .

umtry2.zip

#13

السلام عليكم

أخي حارث ، لقد اطلعت على المثال واقتبست منه الفكرة التي تريدها وطورتها بحيث تعمل كما تقويمنا الآن تماما . ولكني لم أجرب نتائجه :

Option Explicit



Private Type YearData

  M(1 To 12) As Byte

  GS As Date

End Type



Type UmRec

  YY As Integer

  M2(0 To 12) As Integer

  GS As Long

End Type



Private YY As YearData

Public UmAll() As UmRec



Private Sub FillYear( _

  ByVal GS As String, _

  ByVal M1 As Integer, _

  ByVal M2 As Integer, _

  ByVal M3 As Integer, _

  ByVal M4 As Integer, _

  ByVal M5 As Integer, _

  ByVal M6 As Integer, _

  ByVal M7 As Integer, _

  ByVal M8 As Integer, _

  ByVal M9 As Integer, _

  ByVal M10 As Integer, _

  ByVal M11 As Integer, _

  ByVal M12 As Integer)

                     

  YY.GS = CDate(GS)

  YY.M(1) = M1

  YY.M(2) = M2

  YY.M(3) = M3

  YY.M(4) = M4

  YY.M(5) = M5

  YY.M(6) = M6

  YY.M(7) = M7

  YY.M(8) = M8

  YY.M(9) = M9

  YY.M(10) = M10

  YY.M(11) = M11

  YY.M(12) = M12

End Sub



Private Sub LoadYearData(ByVal YY As Integer)

  Select Case YY

    Case 1400: Call FillYear("20-11-1979", 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0)

    Case 1401: Call FillYear("08-11-1980", 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0)

    Case 1402: Call FillYear("28-10-1981", 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1)

  End Select

End Sub



Sub LoadUmAlQura()

  Const hmd = 29

  Dim mm As Byte

  Dim HY As Long

  Dim Days As Long

  Dim FRec As Long

  Dim LRec As Long

  

  FRec = 1400

  LRec = 1402

  ReDim Preserve UmAll(FRec To LRec) As UmRec

  For HY = FRec To LRec

      Call LoadYearData(HY)

      UmAll(HY).YY = HY

      UmAll(HY).GS = YY.GS

      Days = 0

      For mm = 1 To 12

        Days = Days + YY.M(mm) + hmd

        UmAll(HY).M2(mm) = Days

      Next mm

  Next HY

End Sub

تحياتي .

هذا الموضوع مغلق.

مواضيع مشابهة