برنامج برنامج الأذان المعدل بالسي شارب - منتديات الجلفة لكل الجزائريين و العرب

العودة   منتديات الجلفة لكل الجزائريين و العرب > منتديات التقنية > منتدى البرمجة

منتدى البرمجة كل ما يتعلق بلغات البرمجة، فيجوال بيسيك , سي ++ , دلفي , أكسيس , جافا , هتمل...

في حال وجود أي مواضيع أو ردود مُخالفة من قبل الأعضاء، يُرجى الإبلاغ عنها فورًا باستخدام أيقونة تقرير عن مشاركة سيئة ( تقرير عن مشاركة سيئة )، و الموجودة أسفل كل مشاركة .

آخر المواضيع

برنامج الأذان المعدل بالسي شارب

إضافة رد
 
أدوات الموضوع انواع عرض الموضوع
قديم 2013-08-01, 18:27   رقم المشاركة : 1
معلومات العضو
__الهاوي__
أستــاذ
 
الصورة الرمزية __الهاوي__
 

 

 
إحصائية العضو










افتراضي برنامج الأذان المعدل بالسي شارب

السلام عليكم
سبق وأن أنجز أخانا MHDM برنامج للتذكير بالآذان باستخدام الفيبي دوت نت، ولقد ناقشنا ذلك في هذا الموضوع
https://www.djelfa.info/vb/showthread.php?t=1327951
ولقد كانت لي مشاركة هنا وأشرت أن الكلاس الموجود في النت يا إما خاطئ أو أنني لم أفهمه
https://www.djelfa.info/vb/showthread...post1053621218
ولكن المشكلة صعبة الاكتشاف، لقد كانت في قيم خطوط الطول والعرض والموجودة في ملف xml
فالقيم موجودة دون فاصلة في حين الحقيقية موجودة بالفاصلة
مثلا قيم الطول والعرض لمستغانم في ملف xml ها هي

كود بلغة HTML:
<city name="مستغانم">
    <latitude>359170</latitude>
    <longitude>1567</longitude>
</city>

لكن في الحقيقة هي صغيرة وليست كبيرة
كود بلغة HTML:
<city name="مستغانم">
    <latitude>35.9170</latitude>
    <longitude>0.1567</longitude>
</city>

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


كلاس الحساب
كود PHP:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 
athan
{
    class 
CalcPrayerTimes
    
{
        
double Local_Noon;
        
double Asr_Time;
        
double Esha_Time;
        
double Fajr_Time;
        
double Sun_Set;
        
double Sun_Rise;
        public 
CalcPrayerTimes(int Yearint Monthint Daydouble Longdouble Latdouble Zone)
        {
            
double D = (367 Year) - ((Year + (int)((Month 9) / 12)) * 4) + (((int)(275 Month 9)) + Day 730531.5);
            
double L = (280.461 0.9856474 D) % 360;
            
LessMore360(L);
            
double M = (357.528 0.9856003 D) % 360;
            
LessMore360(M);
            
double Lambda 1.915 Math.Sin(ToRadian(M)) + 0.02 Math.Sin(ToRadian(M));
            
Lambda LessMore360(Lambda);
            
double Obliquity 23.439 0.0000004 D;
            
double Alpha ToDegree(Math.Atan((Math.Cos(ToRadian(Obliquity)) * Math.Tan(ToRadian(Lambda)))));//////
            
Alpha LessMore360(Alpha);
            
Alpha Alpha - (360 * (int)(Alpha 360));
            
Alpha = (Alpha 90 * (Math.Floor(Lambda 90) - Math.Floor(Alpha 90)));
            
double ST = (100.46 0.985647352 D) % 360;
            
double Dec ToDegree(Math.Asin(Math.Sin(ToRadian(Obliquity)) * Math.Sin(ToRadian(Lambda))));
            
double Durinal_Arc ToDegree(Math.Acos((Math.Sin(ToRadian(-0.8333)) - Math.Sin(ToRadian(Dec)) * Math.Sin(ToRadian(Lat))) / (Math.Cos(ToRadian(Dec)) * Math.Cos(ToRadian(Lat)))));
            
double Noon Alpha ST;
            
Noon LessMore360(Noon);
            
double UT_Noon Noon Long;
            
Local_Noon UT_Noon 15 Zone;
            
double Asr_Alt ToDegree(Math.Atan(Math.Tan(ToRadian(Lat Dec))));
            
double Asr_Arc ToDegree(Math.Acos((Math.Sin(ToRadian(90 Asr_Alt)) - Math.Sin(ToRadian(Dec)) * Math.Sin(ToRadian(Lat))) / (Math.Cos(ToRadian(Dec)) * Math.Cos(ToRadian(Lat)))));
            
Asr_Arc Asr_Arc 15;
            
Asr_Time Local_Noon Asr_Arc;
            
Sun_Rise Local_Noon - (Durinal_Arc 15);
            
Sun_Set Local_Noon + (Durinal_Arc 15);
            
double Esha_Arc ToDegree(Math.Acos((Math.Sin(ToRadian(-18)) - Math.Sin(ToRadian(Dec)) * Math.Sin(ToRadian(Lat))) / (Math.Cos(ToRadian(Dec)) * Math.Cos(ToRadian(Lat)))));
            
Esha_Time Local_Noon + (Esha_Arc 15);
            
double Fajr_Arc ToDegree(Math.Acos((Math.Sin(ToRadian(-18)) - Math.Sin(ToRadian(Dec)) * Math.Sin(ToRadian(Lat))) / (Math.Cos(ToRadian(Dec)) * Math.Cos(ToRadian(Lat)))));
            
Fajr_Time Local_Noon - (Fajr_Arc 15);
        }        
        public 
double ToRadian(double Value)
        {
            return (
Value Math.PI 180);
        }
        public 
double ToDegree(double Value)
        {
            return (
Value 180 Math.PI);
        }
        public 
double LessMore360(double Value)
        {
            if (
Value <= || Value 360)
            { return (
Value 360); }
            else
                return 
Value;
        }
        public 
int LocalNoonHour
        
{
            
get
            
{
                return ((int)(
Local_Noon));
            }
        }
        public 
int LocalNoonMin
        
{
            
get
            
{
                return (int)(((
Local_Noon) - (int)Local_Noon) * 60);
            }
        }
        public 
int AsrHour
        
{
            
get
            
{
                return ((int)(
Asr_Time));
            }
        }
        public 
int AsrMin
        
{
            
get
            
{
                return (int)(((
Asr_Time) - (int)(Asr_Time)) * 60);
            }
        }
        public 
int SunRiseHour
        
{
            
get
            
{
                return ((int)(
Sun_Rise));
            }
        }
        public 
int SunRiseMinr
        
{
            
get
            
{
                return (int)(((
Sun_Rise) - (int)(Sun_Rise)) * 60);
            }
        }
        public 
int SunSetHour
        
{
            
get
            
{
                return ((int)(
Sun_Set));
            }
        }
        public 
int SunSetMin
        
{
            
get
            
{
                return (int)(((
Sun_Set) - (int)(Sun_Set)) * 60);
            }
        }
        public 
int FajrHour
        
{
            
get
            
{
                return ((int)(
Fajr_Time));
            }
        }
        public 
int FajrMin
        
{
            
get
            
{
                return (int)(((
Fajr_Time) - (int)(Fajr_Time)) * 60);
            }
        }
        public 
int EshaHour
        
{
            
get
            
{
                return ((int)(
Esha_Time));
            }
        }
        public 
int EshaMin
        
{
            
get
            
{
                return (int)(((
Esha_Time) - (int)(Esha_Time)) * 60);
            }
        }
    }



البرنامج من إنجاز العبد الضعيف
كود PHP:
using System;
using System.IO;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using athan;
using System.Media;
namespace 
athan
{
    public 
partial class AthanForm Form
    
{
        
DataSet ds;
        
CalcPrayerTimes calculator;
        
NotifyIcon myNotifyIcon;
        
ContextMenu myMenu;

        public 
AthanForm()
        {
            
InitializeComponent();
        }

        private 
void AthanForm_Load(object senderEventArgs e)
        {
            


            
myMenu = new ContextMenu();//إضافة قائمة قرب الساعة لأيقونة البرنامج
            
myMenu.MenuItems.Add(0, new MenuItem("إظهار", new System.EventHandler(Show_Click)));
            
myMenu.MenuItems.Add(1, new MenuItem("إخفاء", new System.EventHandler(Hide_Click)));
            
myMenu.MenuItems.Add(2, new MenuItem("خروج", new System.EventHandler(Exit_Click)));

            
myNotifyIcon = new NotifyIcon();            //إضافة أيقونة قرب الساعة
            
myNotifyIcon.Text "برنامج الأذان: النسخة 1.00";
            
myNotifyIcon.Visible true;
            
myNotifyIcon.Icon = new Icon(GetType(), "TrayIcon.ico");
            
myNotifyIcon.ContextMenu myMenu;           //ربط الايقونة بالقائمة السابقة 

            
lblDay.Text DateTime.Now.ToLongDateString();         //الحصول على تاريخ اليوم على هيئة حروف

            
string myXMLfile "algeria.xml";       //  متغير يحمل اسم ملف الإكس أم أل
            
ds = new DataSet();         // تهيئة داتاست وهي عبارة عند قاعدة بيانات في الذاكرة
            
ds.ReadXml(myXMLfile);         //بناء الداتاسات اعتمادا على هيكل الإكس أم أل

            
cbWilaya.DataSource ds.Tables[0];       //  ربط الكومبوبوكس بالجدول الاول للداتاست
            
cbWilaya.DisplayMember "name";        // عرض اسم الولاية في الكومبوبوكس

         
}

        protected 
void Exit_Click(Object senderSystem.EventArgs e)
        {
            
Application.Exit();
        }
        protected 
void Hide_Click(Object senderSystem.EventArgs e)
        {
            
this.Hide();
        }
        protected 
void Show_Click(Object senderSystem.EventArgs e)
        {
            
this.Show();
        }

        private 
void timer1_Tick(object senderEventArgs e)
        {
            
lblTime.Text DateTime.Now.ToLongTimeString();//إستخلاص الوقت الحالي
            
if (DateTime.Now.Second == 0CheckEachMinute();//بعد كل دقيقة يتم التدقيق في وقت الصلاة
        
}

        private 
void CheckEachMinute()
        {
            
//تحويل الازمنة إلى دقائق لتسهيل المقارنة
            
int iFajr calculator.FajrHour 60 calculator.FajrMin;
            
int iLocalNoon calculator.LocalNoonHour 60 calculator.LocalNoonMin;
            
int iAsr calculator.AsrHour 60 calculator.AsrMin;
            
int iSunSet calculator.SunSetHour 60 calculator.SunSetMin;
            
int iEsha calculator.EshaHour 60 calculator.EshaMin;

            
int iNow DateTime.Now.Hour 60 DateTime.Now.Minute;

            
// استدعاء دالة لتنفيذ أمر الاذان
            
if (iNow == iFajrplayAthan("الفجر");    
            if (
iNow == iLocalNoonplayAthan("الظهر");
            if (
iNow == iAsrplayAthan("العصر");
            if (
iNow == iSunSetplayAthan("المغرب");
            if (
iNow == iEshaplayAthan("العشاء");
        }

        private 
void playAthan(string sSatalTime)
        {
            
//windows/system32/wmp.dll استخدام مكتبة الصوت الموجودة هنا
            
WMPLib.WindowsMediaPlayer wPlayer = new WMPLib.WindowsMediaPlayer();//استدعاء كنترول تشغيل الصوت
            
wPlayer.URL "athan.wma";
            
wPlayer.controls.play();

            
DialogResult dialogResult MessageBox.Show("أذان صلاة " sSatalTime "\n" "لإيقاف الأذان إضغط على زر نعم""الأذان"MessageBoxButtons.YesNo);
            if (
dialogResult == DialogResult.Yes)
            {
                
wPlayer.controls.stop();
            }
            
        }


        private 
void cbWilaya_SelectedIndexChanged(object senderEventArgs e)
        {
            
int index cbWilaya.SelectedIndex;  //الحصول على إندكس الولاية

            
int Year DateTime.Now.Year;        //الحصول على السنة الحالية
            
int Month DateTime.Now.Month;      //الحصول علي الشهر الحالي
            
int Day DateTime.Now.Day;          //الحصول على اليوم الحالي
            
double Long Convert.ToDouble(ds.Tables[0].Rows[index]["longitude"]) / 10000;     //استخلاص قيمة خط الطول للولاية
            
double Lat Convert.ToDouble(ds.Tables[0].Rows[index]["latitude"]) / 10000;       //استخلاص قيمة دائرة العرض للولاية
            
calculator = new CalcPrayerTimes(YearMonthDayLongLat1.0);              // هنا نستدعي الكلاس الجاهز الذي يحسب أوقات الصلاة

            //استخلاص وقت كل صلاة
            
lblFajr.Text calculator.FajrHour.ToString("00") + ":"
                           
calculator.FajrMin.ToString("00");
            
lblLocalNoon.Text calculator.LocalNoonHour.ToString("00") + ":"
                                
calculator.LocalNoonMin.ToString("00");
            
lblAsr.Text calculator.AsrHour.ToString("00") + ":"
                          
calculator.AsrMin.ToString("00");
            
lblSunSet.Text calculator.SunSetHour.ToString("00") + ":"
                            
calculator.SunSetMin.ToString("00");
            
lblEsha.Text calculator.EshaHour.ToString("00") + ":"
                           
calculator.EshaMin.ToString("00");

        }


    }



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

من يحتاج لمواقيت الصلاة في بلدان أخرى فما عليه إلا استبدال ملف algeria.xml مع الحفاظ على التسمية.

كما أنني استخدمت أسامي إنجليزية في تسمية المتغيرات والدوال وهذا لأنني معقد من الفرنسية على اعتبارها لغة دخيلة على البرمجة.
وأثناء التسمية قاربت الأسلوب العالمي في التسمية
يعني Now من نوع interger يسمى هكذا : iNow
المتغير SalatTime من نوع string يسمى هكذا: sSalatTime
الكنترول Wilaya من نوع ComboBox يسمى هكذا: cbWilaya
Label = lbl
TextBox = txt
Button = btn
ListBox = lb
.... إلخ

وهذا هو الاسلوب المعتمد عالميا فلنعتمده.

من يجد مشكلة في تشغيل التطبيق فأرجو أن يعلمني، فلقد سبق واستخدمت dot.net 4.0 في البرمجة.
من أشكل عليه شيء فلا بأس بأن يطرح تساؤله هنا

هذه النسخة الأولى، ستحسن لاحقا إن شاء الله.

لتحميل التطبيق
https://www.gulfup.com/?MmxboL

لتحميل السورس والتعديل عليه
https://www.gulfup.com/?ruAeCv



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



التعديلات:
- إضافة أنواع مختلفة من أصوات الأذان
- حفظ البيانات للاستخدام مستقبلا
- التنبيه من خلال أيقونة شريط المهام

فقط كملاحظة: تم تحميل التطبيق السابق أكثر من 30 مرة، لكنني لا أعرف إن اشتغل عند البعض أم لا
أعلم أنه عند البعض يطلب تحميل dotnet framework 4.0
سأقوم بإعادة البرنامج على الفريموورك 2.0
لمن لم يشتغل معه أرجو أن يعلمني لأن هذا ينفعني وينفع المبرمجين في بيئة الدوت نت.

تحميل التطبيق
https://www.gulfup.com/?TKRnLn









 


رد مع اقتباس
قديم 2013-08-02, 00:24   رقم المشاركة : 2
معلومات العضو
MHDM
عضو مشارك
 
الصورة الرمزية MHDM
 

 

 
إحصائية العضو










افتراضي

السلام عليكم

اخي __الهاوي__

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

لا لمثل هذه الردود المحبطة



اقتباس:
المشاركة الأصلية كتبت بواسطة askme مشاهدة المشاركة
برمجة سيئة جدا
وما نفعه اذا كان التغيير يدوي ؟

فل تقل خيرا او لتصمت









رد مع اقتباس
قديم 2013-08-02, 09:52   رقم المشاركة : 3
معلومات العضو
__الهاوي__
أستــاذ
 
الصورة الرمزية __الهاوي__
 

 

 
إحصائية العضو










افتراضي

العفو أخي
يد الله مع الجماعة وإنما يأكل الذئب من الغنم القاصية
هي أكيد أن الاخ تسرع ولم ينتبه لشيء وهو أن أعمالك وإبداعاتك يا أخي كانت مجانية وتعليمية، فمهما فعلت أو أنقصت فأنت مشكور وإن شاء الله مأجور

عودة إلى الأذان
لم أكمل موضوعي أمس لأن سيرفر الجلفة توقف عن العمل
تم تعديل المحتوى وإضافة وصلات التنزيل

أراكم لاحقا









رد مع اقتباس
قديم 2013-08-02, 12:08   رقم المشاركة : 4
معلومات العضو
__الهاوي__
أستــاذ
 
الصورة الرمزية __الهاوي__
 

 

 
إحصائية العضو










افتراضي

وهذا تطبيق آخر بالدلفي لعشاق هذه اللغة

كود PHP:
unit hdfPrayTimesUnit;
{------------------------------------------------------------------------------
   
Creation Date2009/08/16 (1388/05/25)
   
AuthorEbrahim Asadi
   Version
1.0.0
   Description
Prayer Times CalculatorThdfPrayTime is a class providing a set of
      functions to calculate prayer times based on a variety of conventions usually
      used in Muslim communities
.
   
Notes:
      
It is based on Hamid Zarrabi-Zadeh PrayTimes library which is in JavaScript.
      (
http://tanzil.info/praytime).
   
History:

   
Date:  [Fixed:, Added:, Changed:, Improved:, Removed:]
------------------------------------------------------------------------------}

interface

uses SysUtilsDateUtilsMath;

type
  
// Prayer Times Record
  
ThdfPrayerTimes record
    Fajr
Double;
    
SunriseDouble;
    
DhuhrDouble;
    
AsrDouble;
    
SunsetDouble;
    
MaghribDouble;
    
IshaDouble;
  
end;

  
// Calc Method Parameters
  
ThdfMethodParamRecord record
    FajrAngle
Double;
    
MaghribSelectorDouble;        // (0 = angle; 1 = minutes after sunset)
    
MaghribParameterValueDouble;  // (in angle or minutes)
    
IshaSelectorDouble;           // (0 = angle; 1 = minutes after maghrib)
    
IshaParameterValueDouble;     // (in angle or minutes)
  
end;

  
// Sun Position Record
  
ThdfSunPosition record
    Declination
Double;   // declination of the Sun
    
EquationOfTimeDouble// The Equation of Time
    
DistanceFromEarthDouble;   // The distance of the Sun from the Earth, in astronomical units (AU)
  
end;

  
// Calculation Methods
  
ThdfCalculationMethod =
    (
      
cmJafari,     // Ithna Ashari
      
cmKarachi,    // University of Islamic Sciences, Karachi
      
cmISNA,       // Islamic Society of North America (ISNA)
      
cmMWL,        // Muslim World League (MWL)
      
cmMakkah,     // Umm al-Qura, Makkah
      
cmEgypt,      // Egyptian General Authority of Survey
      
cmCustom,     // Custom Setting
      
cmTehran      // Institute of Geophysics, University of Tehran
    
);

  
// Juristic Methods
  
ThdfJuristicMethod =
    (
      
jmShafii,     // Shafii (standard)
      
jmHanafi      // Hanafi
    
);

    
// Adjusting Methods for Higher Latitudes
  
ThdfAdjustingMethodForHigherLatitudes =
    (
      
hlNone,       // No adjustment
      
hlMidNight,   // middle of night
      
hlOneSeventh// 1/7th of night
      
hlAngleBased  // angle/60th of night
    
);

  
// Time Formats
  
ThdfTimeFormat =
    (
      
tfTime24,     // 24-hour format
      
tfTime12,     // 12-hour format
      
tfTime12NS,   // 12-hour format with no suffix
      
tfFloat       // floating point number
    
);

  
// ThdfPrayTimes class
  
ThdfPrayTimes = class
  private
    
TimeFormatThdfTimeFormat// time format
      
NumIterationsInteger;          // number of iterations needed to compute times
    
InvalidTimestring;

    
JDateDouble// Julian date

    
MethodParams: array[ThdfCalculationMethodof ThdfMethodParamRecord;

    
FCalcMethodThdfCalculationMethod;
    
FAsrJuristicThdfJuristicMethod;
    
FAdjustHighLatsThdfAdjustingMethodForHigherLatitudes;
    
FLatitudeDouble;
    
FLongitudeDouble;
    
FTimeZoneDouble;
    
FDhuhrMinutesInteger;
    
FDayLightSavingTimeBoolean;

    function 
ComputeDayTimes(): ThdfPrayerTimes;  // compute prayer times at given julian date
    
function ComputeTimes(TimesThdfPrayerTimes): ThdfPrayerTimes// compute prayer times at given julian date
    
function ComputeTime(GDoubleTimeDouble): Double// compute time for a given angle G
    
function DayPortion(TimesThdfPrayerTimes): ThdfPrayerTimes// convert hours to day portions
    
function SunDeclination(AJulianDateDouble): Double;  // compute declination angle of sun
    
function ComputeMidDay(TimeDouble): Double// compute mid-day (Dhuhr, Zawal) time
    
function EquationOfTime(AJulianDateDouble): Double;  // compute equation of time
    
function SunPosition(AJulianDateDouble): ThdfSunPosition// compute declination angle of sun and equation of time
                                                       // and distance of the Sun from the Earth, in astronomical units (AU)
    
function AdjustTimes(TimesThdfPrayerTimes): ThdfPrayerTimes// adjust times in a prayer time array
    
function AdjustHighLatTimes(TimesThdfPrayerTimes): ThdfPrayerTimes// adjust Fajr, Isha and Maghrib for ********s in higher latitudes
    
function TimeDiff(Time1Time2Double): Double// compute the difference between two times
    
function NightPortion(AngleDouble): Double// the night portion used for adjusting times in higher latitudes
    
function ComputeAsr(StepIntegerTDouble): Double// compute the time of Asr
    
function TwoDigitsFormat(NumInteger): string// add a leading 0 if necessary

    
procedure SetCustomParams(ParamsThdfMethodParamRecord);

    
//---------------------- Trigonometric Functions -----------------------
    
function DSin(DDouble): Double;        // degree sin
    
function DCos(DDouble): Double;        // degree cos
    
function DTan(DDouble): Double;        // degree tan
    
function DArcsin(XDouble): Double;     // degree arcsin
    
function DArccos(XDouble): Double;     // degree arccos
    
function DArctan2(YXDouble): Double// degree arctan2
    
function DArccot(XDouble): Double;     // degree arccot
    
function DegreeToRadian(DDouble): Double;         // degree to radian
    
function RadianToDegree(RDouble): Double;         // radian to degree
    
function FixHour(ADouble): Double;     // range reduce hours to 0..23
    
function FixAngle(ADouble): Double;    // range reduce angle in degrees.
    
procedure SetAdjustHighLats(const ValueThdfAdjustingMethodForHigherLatitudes);
    
procedure SetAsrJuristic(const ValueThdfJuristicMethod);
    
procedure SetCalcMethod(const ValueThdfCalculationMethod);
    
procedure SetLatitude(const ValueDouble);
    
procedure SetLongitude(const ValueDouble);
    
procedure SetTimeZone(const ValueDouble);
    
procedure SetDhuhrMinutes(const ValueInteger);
    
procedure SetDayLightSavingTime(const ValueBoolean);
  public
    
constructor Create;
    
destructor Destroyoverride;

    function 
GetDatePrayerTimes(AYearAMonthADayWordALatitudeALongitudeATimeZoneDouble): ThdfPrayerTimes;
    function 
GetPrayerTimes(ADateALatitudeALongitudeATimeZoneDouble): ThdfPrayerTimes;

    
procedure SetFajrAngle(AngleDouble);
    
procedure SetMaghribAngle(AngleDouble);
    
procedure SetIshaAngle(AngleDouble);
    
procedure SetMaghribMinutes(MinutesDouble); // minutes after sunset
    
procedure SetIshaMinutes(MinutesDouble);    // minutes after maghrib

    
function FloatToTime12(TimeDoubleNoSuffixBoolean False): string;
    function 
FloatToTime24(TimeDouble): string;

    
// caculation method
    
property CalcMethodThdfCalculationMethod read FCalcMethod write SetCalcMethod;
    
// Juristic method for Asr
    
property AsrJuristicThdfJuristicMethod read FAsrJuristic write SetAsrJuristic;
    
// adjusting method for higher latitudes
    
property AdjustHighLatsThdfAdjustingMethodForHigherLatitudes read FAdjustHighLats write SetAdjustHighLats;
    
// latitude
    
property LatitudeDouble read FLatitude write SetLatitude;
    
// longitude
    
property LongitudeDouble read FLongitude write SetLongitude;
    
// time-zone
    
property TimeZoneDouble read FTimeZone write SetTimeZone;
    
// minutes after mid-day for Dhuhr
    
property DhuhrMinutesInteger read FDhuhrMinutes write SetDhuhrMinutes;
    
// Automatically add one hour to times for daylight saving times
    
property DayLightSavingTimeBoolean read FDayLightSavingTime write SetDayLightSavingTime;
  
end;

implementation

//******************************************************************************
ThdfPrayTime }
//******************************************************************************

function ThdfPrayTimes.adjustHighLatTimes(TimesThdfPrayerTimes): ThdfPrayerTimes;
var
  
NightTimeDouble;
  
FajrDiffDouble;
  
IshaAngleDouble;
  
IshaDiffDouble;
  
MaghribAngleDouble;
  
MaghribDiffDouble;
begin
    NightTime 
:= timeDiff(Times.SunsetTimes.Sunrise); // sunset to sunrise

    // Adjust Fajr
    
FajrDiff := nightPortion(MethodParams[Self.calcMethod].FajrAngle) * NightTime;

    if (
IsNan(Times.Fajr) or (TimeDiff(Times.FajrTimes.Sunrise) > FajrDiff)) then
  begin
        Times
.Fajr := Times.Sunrise FajrDiff;
  
end;

    
// Adjust Isha
  
if MethodParams[Self.calcMethod].IshaSelector 0 then
  begin
    IshaAngle 
:= MethodParams[Self.calcMethod].IshaParameterValue;
  
end
  
else
  
begin
    IshaAngle 
:= 18;
  
end;

    
IshaDiff := nightPortion(IshaAngle) * NightTime;

    if (
IsNan(Times.Isha) or (timeDiff(Times.AsrTimes.Isha) > IshaDiff)) then
  begin
        Times
.Isha := Times.Asr IshaDiff;
  
end;

    
// Adjust Maghrib
  
if MethodParams[Self.calcMethod].MaghribSelector 0 then
  begin
    MaghribAngle 
:= MethodParams[Self.calcMethod].MaghribParameterValue;
  
end
  
else
  
begin
    MaghribAngle 
:= 4;
  
end;

    
MaghribDiff := nightPortion(MaghribAngle) * NightTime;

    if (
IsNan(Times.Maghrib) or (timeDiff(Times.AsrTimes.Maghrib) > MaghribDiff)) then
  begin
        Times
.Maghrib := Times.Asr MaghribDiff;
  
end;

    
Result := Times;
end;

//******************************************************************************
function ThdfPrayTimes.adjustTimes(TimesThdfPrayerTimes): ThdfPrayerTimes;
begin
  Times
.Fajr := Times.Fajr Self.timeZone - (FLongitude 15);
  
Times.Sunrise := Times.Sunrise Self.timeZone - (FLongitude 15);
  
Times.Dhuhr := Times.Dhuhr Self.timeZone - (FLongitude 15);
  
Times.Sunset := Times.Sunset Self.timeZone - (FLongitude 15);
  
Times.Asr := Times.Asr Self.timeZone - (FLongitude 15);
  
Times.Maghrib := Times.Maghrib Self.timeZone - (FLongitude 15);
  
Times.Isha := Times.Isha Self.timeZone - (FLongitude 15);

  
Times.Dhuhr := Times.Dhuhr + (FDhuhrMinutes 60);

  if 
MethodParams[Self.calcMethod].MaghribSelector 1 then //maghrib
  
begin
    Times
.Maghrib := Times.Asr + (MethodParams[Self.calcMethod].MaghribParameterValue 60);
  
end;

  if 
MethodParams[Self.calcMethod].IshaSelector 1 then //Isha
  
begin
    Times
.Isha := Times.Maghrib + (MethodParams[Self.calcMethod].IshaParameterValue 60);
  
end;

  if 
Self.adjustHighLats <> hlNone then
  begin
    Times 
:= adjustHighLatTimes(Times);
  
end;

  if 
FDayLightSavingTime then
  begin
    Times
.Fajr := Times.Fajr 1;
    
Times.Sunrise := Times.Sunrise 1;
    
Times.Dhuhr := Times.Dhuhr 1;
    
Times.Asr := Times.Asr 1;
    
Times.Sunset := Times.Sunset 1;
    
Times.Maghrib := Times.Maghrib 1;
    
Times.Isha := Times.Isha 1;
  
end;

  
Result := Times;
end;

//******************************************************************************
function ThdfPrayTimes.computeAsr(stepIntegertDouble): Double;
var
  
DDouble;
  
GDouble;
begin
    D 
:= sunDeclination(Self.JDate t);
    
:= - DArccot(step Self.DTan(abs(FLatitude D)));
    
Result := computeTime(Gt);
end;

//******************************************************************************
function ThdfPrayTimes.ComputeDayTimesThdfPrayerTimes;
var
  
TimesThdfPrayerTimes;
  
IInteger;
begin
  
//default Times
    
Times.Fajr := 5;
  
Times.Sunrise := 6;
  
Times.Dhuhr := 12;
  
Times.Asr := 13;
  
Times.Sunset := 18;
  
Times.Maghrib := 18;
  
Times.Isha := 18;

  for 
:= 0 to Self.NumIterations do
  
begin
        Times 
:= computeTimes(Times);
  
end;

    
Times := adjustTimes(Times);
    
Result := Times;
end;

//******************************************************************************
function ThdfPrayTimes.ComputeMidDay(timeDouble): Double;
var
  
TDouble;
begin
    T 
:= EquationOfTime(Self.JDate time);
    
Result := FixHour(12 T);
end;

//******************************************************************************
function ThdfPrayTimes.ComputeTime(GTimeDouble): Double;
var
  
DDouble;
  
ZDouble;
  
VDouble;
begin
    D 
:= SunDeclination(Self.JDate Time);
    
:= computeMidDay(Time);
    
:= 1/15 DArccos((- DSin(G)- DSin(D)* DSin(FLatitude)) / (DCos(D)* DCos(FLatitude)));

  if 
90 then
  begin
    V 
:= -V;
  
end;

    
Result := V;
end;

//******************************************************************************
function ThdfPrayTimes.ComputeTimes(TimesThdfPrayerTimes): ThdfPrayerTimes;
var
  
TThdfPrayerTimes;
  
StepInteger;
begin
    T 
:= dayPortion(Times);

    
Result.Fajr    := computeTime(180 MethodParams[calcMethod].FajrAngleT.Fajr);
    
Result.Sunrise := computeTime(180 0.833T.Sunrise);
    
Result.Dhuhr   := computeMidDay(T.Dhuhr);
  
Step := 1;
  case 
AsrJuristic of
    jmShafii
Step := 1;
    
jmHanafiStep := 2;
  
end;
    
Result.Asr     := computeAsr(StepT.Asr);
    
Result.Sunset  := computeTime(0.833T.Sunset);;
    
Result.Maghrib := computeTime(MethodParams[calcMethod].MaghribParameterValueT.Maghrib);
    
Result.Isha    := computeTime(MethodParams[calcMethod].IshaParameterValueT.Isha);
end;

//******************************************************************************
constructor ThdfPrayTimes.Create;
begin
  calcMethod 
:= cmJafari;       // caculation method
  
asrJuristic := jmShafii;      // Juristic method for Asr
  
adjustHighLats := hlMidNight// adjusting method for higher latitudes
  
TimeFormat := tfTime24;       // time format
  
dhuhrMinutes := 0;                // minutes after mid-day for Dhuhr
  
NumIterations := 1;                // number of iterations needed to compute Times
  
InvalidTime := '-----';

  
MethodParams[cmJafari].FajrAngle := 16;
  
MethodParams[cmJafari].MaghribSelector := 0;
  
MethodParams[cmJafari].MaghribParameterValue := 4;
  
MethodParams[cmJafari].IshaSelector := 0;
  
MethodParams[cmJafari].IshaParameterValue := 14;

  
MethodParams[cmKarachi].FajrAngle := 18;
  
MethodParams[cmKarachi].MaghribSelector := 1;
  
MethodParams[cmKarachi].MaghribParameterValue := 0;
  
MethodParams[cmKarachi].IshaSelector := 0;
  
MethodParams[cmKarachi].IshaParameterValue := 18;

  
MethodParams[cmISNA].FajrAngle := 15;
  
MethodParams[cmISNA].MaghribSelector := 1;
  
MethodParams[cmISNA].MaghribParameterValue := 0;
  
MethodParams[cmISNA].IshaSelector := 0;
  
MethodParams[cmISNA].IshaParameterValue := 15;

  
MethodParams[cmMWL].FajrAngle := 18;
  
MethodParams[cmMWL].MaghribSelector := 1;
  
MethodParams[cmMWL].MaghribParameterValue := 0;
  
MethodParams[cmMWL].IshaSelector := 0;
  
MethodParams[cmMWL].IshaParameterValue := 17;

  
MethodParams[cmMakkah].FajrAngle := 19;
  
MethodParams[cmMakkah].MaghribSelector := 1;
  
MethodParams[cmMakkah].MaghribParameterValue := 0;
  
MethodParams[cmMakkah].IshaSelector := 1;
  
MethodParams[cmMakkah].IshaParameterValue := 90;

  
MethodParams[cmEgypt].FajrAngle := 19.5;
  
MethodParams[cmEgypt].MaghribSelector := 1;
  
MethodParams[cmEgypt].MaghribParameterValue := 0;
  
MethodParams[cmEgypt].IshaSelector := 0;
  
MethodParams[cmEgypt].IshaParameterValue := 17.5;

  
MethodParams[cmTehran].FajrAngle := 17.7;
  
MethodParams[cmTehran].MaghribSelector := 0;
  
MethodParams[cmTehran].MaghribParameterValue := 4.5;
  
MethodParams[cmTehran].IshaSelector := 0;
  
MethodParams[cmTehran].IshaParameterValue := 15;

  
MethodParams[cmCustom].FajrAngle := 18;
  
MethodParams[cmCustom].MaghribSelector := 1;
  
MethodParams[cmCustom].MaghribParameterValue := 0;
  
MethodParams[cmCustom].IshaSelector := 0;
  
MethodParams[cmCustom].IshaParameterValue := 17;
end;

//******************************************************************************
function ThdfPrayTimes.DArccos(XDouble): Double;
begin
  Result 
:= RadianToDegree(ArcCos(X));
end;

//******************************************************************************
function ThdfPrayTimes.DArccot(XDouble): Double;
begin
  Result 
:= RadianToDegree(ArcTan(1/X));
end;

//******************************************************************************
function ThdfPrayTimes.DArcsin(XDouble): Double;
begin
  Result 
:= RadianToDegree(ArcSin(X));
end;

//******************************************************************************
function ThdfPrayTimes.DArctan2(YXDouble): Double;
begin
  Result 
:= RadianToDegree(ArcTan2(YX));
end;

//******************************************************************************
function ThdfPrayTimes.DayPortion(TimesThdfPrayerTimes): ThdfPrayerTimes;
begin
  Times
.Fajr := Times.Fajr 24;
  
Times.Sunrise := Times.Sunrise 24;
  
Times.Dhuhr := Times.Dhuhr 24;
  
Times.Asr := Times.Asr 24;
  
Times.Sunset := Times.Sunset 24;
  
Times.Maghrib := Times.Maghrib 24;
  
Times.Isha := Times.Isha 24;

    
Result := Times;
end;

//******************************************************************************
function ThdfPrayTimes.DCos(DDouble): Double;
begin
  Result 
:= Cos(DegreeToRadian(D));
end;

//******************************************************************************
destructor ThdfPrayTimes.Destroy;
begin

  inherited
;
end;

//******************************************************************************
function ThdfPrayTimes.DSin(DDouble): Double;
begin
  Result 
:= Sin(DegreeToRadian(D));
end;

//******************************************************************************
function ThdfPrayTimes.DTan(DDouble): Double;
begin
  Result 
:= Tan(DegreeToRadian(D));
end;

//******************************************************************************
function ThdfPrayTimes.DegreeToRadian(DDouble): Double;
begin
  Result 
:= (Pi) / 180.0;
end;

//******************************************************************************
function ThdfPrayTimes.EquationOfTime(AJulianDateDouble): Double;
begin
    Result 
:= sunPosition(AJulianDate).EquationOfTime;
end;

//******************************************************************************
function ThdfPrayTimes.FixAngle(ADouble): Double;
begin
    A 
:= 360.0 * (Floor(360.0));

  if 
0 then
  begin
      A 
:= 360.0;
  
end;

    
Result := A;
end;

//******************************************************************************
function ThdfPrayTimes.FixHour(ADouble): Double;
begin
    A 
:= 24.0 * (Floor(24.0));

  if 
0 then
  begin
    A 
:= 24.0;
  
end;

    
Result := A;
end;

//******************************************************************************
function ThdfPrayTimes.FloatToTime12(TimeDoubleNoSuffixBoolean): string;
var
  
HoursInteger;
  
MinutesInteger;
  
SecondsInteger;
  
Suffixstring;
begin
    
if (IsNan(Time)) then
  begin
        Result 
:= Self.InvalidTime;
    Exit;
  
end;

    
Hours := Math.Floor(Time);
    
Minutes := Math.Floor((Time Hours) * 60);
  
Seconds := Math.Floor((Time Hours) * 3600 Minutes 60);

  if 
Hours >= 12 then
  begin
    Suffix 
:= ' PM';
  
end
  
else
  
begin
    Suffix 
:= ' PM';
  
end;

    
Hours := ((Hours 12 1mod 12) + 1;
    
Result := IntToStr(hours) + ':' TwoDigitsFormat(Minutes) + ':' TwoDigitsFormat(Seconds);

  if 
not NoSuffix then
  begin
    Result 
:= Result Suffix;
  
end;
end;

//******************************************************************************
function ThdfPrayTimes.FloatToTime24(TimeDouble): string;
var
  
HoursInteger;
  
MinutesInteger;
  
SecondsInteger;
begin
    
if IsNan(Timethen
  begin
        Result 
:= Self.InvalidTime;
    Exit;
  
end;

    
Hours := Math.Floor(Time);
    
Minutes := Math.Floor((Time Hours) * 60);
  
Seconds := Math.Floor((Time Hours) * 3600 Minutes 60);
    
Result := twoDigitsFormat(Hours) + ':' TwoDigitsFormat(Minutes) + ':' TwoDigitsFormat(Seconds);
end;

//******************************************************************************
function ThdfPrayTimes.getDatePrayerTimes(AYearAMonthADayWordALatitudeALongitudeATimeZoneDouble): ThdfPrayerTimes;
var
  
ADateTimeTDateTime;
begin
  FLatitude 
:= ALatitude;
  
FLongitude := ALongitude;
  
FTimeZone := ATimeZone;

  
ADateTime := EncodeDate(AYearAMonthADay);
  
Self.JDate := DateTimeToJulianDate(ADateTime) - FLongitude / (15 24);
  
Result := computeDayTimes();
end;

//******************************************************************************
function ThdfPrayTimes.GetPrayerTimes(ADateALatitudeALongitudeATimeZoneDouble): ThdfPrayerTimes;
var
  
YearWord;
  
MonthWord;
  
DayWord;
begin
  DecodeDate
(ADateYearMonthDay);
    
Result := getDatePrayerTimes(YearMonthDayALatitudeALongitudeATimeZone);
end;

//******************************************************************************
function ThdfPrayTimes.nightPortion(AngleDouble): Double;
begin
  Result 
:= 0;

  case 
Self.AdjustHighLats of
    hlAngleBased
:
    
begin
          Result 
:= 1/60 Angle;
    
end;

    
hlMidNight:
    
begin
          Result 
:= 1/2;
    
end;

    
hlOneSeventh:
    
begin
      Result 
:= 1/7;
    
end;
  
end;
end;

//******************************************************************************
function ThdfPrayTimes.RadianToDegree(RDouble): Double;
begin
  Result 
:= (180.0) / Pi;
end;

//******************************************************************************
procedure ThdfPrayTimes.SetAdjustHighLats(const ValueThdfAdjustingMethodForHigherLatitudes);
begin
  FAdjustHighLats 
:= Value;
end;

//******************************************************************************
procedure ThdfPrayTimes.SetAsrJuristic(const ValueThdfJuristicMethod);
begin
  FAsrJuristic 
:= Value;
end;

//******************************************************************************
procedure ThdfPrayTimes.SetCalcMethod(const ValueThdfCalculationMethod);
begin
  FCalcMethod 
:= Value;
end;

//******************************************************************************
procedure ThdfPrayTimes.setCustomParams(ParamsThdfMethodParamRecord);
begin
  
if Params.FajrAngle 0 then
  begin
    MethodParams
[cmCustom].FajrAngle := MethodParams[calcMethod].FajrAngle;
  
end
  
else
  
begin
    MethodParams
[cmCustom].FajrAngle := Params.FajrAngle;
  
end;

  if 
Params.MaghribSelector 0 then
  begin
    MethodParams
[cmCustom].MaghribSelector := MethodParams[calcMethod].MaghribSelector;
  
end
  
else
  
begin
    MethodParams
[cmCustom].MaghribSelector := Params.MaghribSelector;
  
end;

  if 
Params.MaghribParameterValue 0 then
  begin
    MethodParams
[cmCustom].MaghribParameterValue := MethodParams[calcMethod].MaghribParameterValue;
  
end
  
else
  
begin
    MethodParams
[cmCustom].MaghribParameterValue := Params.MaghribParameterValue;
  
end;

  if 
Params.IshaSelector 0 then
  begin
    MethodParams
[cmCustom].IshaSelector := MethodParams[calcMethod].IshaSelector;
  
end
  
else
  
begin
    MethodParams
[cmCustom].IshaSelector := Params.IshaSelector;
  
end;

  if 
Params.IshaParameterValue 0 then
  begin
    MethodParams
[cmCustom].IshaParameterValue := MethodParams[calcMethod].IshaParameterValue;
  
end
  
else
  
begin
    MethodParams
[cmCustom].IshaParameterValue := Params.IshaParameterValue;
  
end;

    
calcMethod := cmCustom;
end;

//******************************************************************************
procedure ThdfPrayTimes.SetDayLightSavingTime(const ValueBoolean);
begin
  FDayLightSavingTime 
:= Value;
end;

//******************************************************************************
procedure ThdfPrayTimes.SetDhuhrMinutes(const ValueInteger);
begin
  FDhuhrMinutes 
:= Value;
end;

//******************************************************************************
procedure ThdfPrayTimes.SetFajrAngle(AngleDouble);
var
  
MethodParamRecordThdfMethodParamRecord;
begin
  MethodParamRecord
.FajrAngle := Angle;
  
MethodParamRecord.MaghribSelector := 0;
  
MethodParamRecord.MaghribParameterValue := 0;
  
MethodParamRecord.IshaSelector := 0;
  
MethodParamRecord.IshaParameterValue := 0;

    
SetCustomParams(MethodParamRecord);
end;

//******************************************************************************
procedure ThdfPrayTimes.SetIshaAngle(AngleDouble);
var
  
MethodParamRecordThdfMethodParamRecord;
begin
  MethodParamRecord
.FajrAngle := 0;
  
MethodParamRecord.MaghribSelector := 0;
  
MethodParamRecord.MaghribParameterValue := 0;
  
MethodParamRecord.IshaSelector := 0;
  
MethodParamRecord.IshaParameterValue := Angle;

  
SetCustomParams(MethodParamRecord);
end;

//******************************************************************************
procedure ThdfPrayTimes.SetIshaMinutes(MinutesDouble);
var
  
MethodParamRecordThdfMethodParamRecord;
begin
  MethodParamRecord
.FajrAngle := 0;
  
MethodParamRecord.MaghribSelector := 0;
  
MethodParamRecord.MaghribParameterValue := 0;
  
MethodParamRecord.IshaSelector := 1;
  
MethodParamRecord.IshaParameterValue := Minutes;

  
SetCustomParams(MethodParamRecord);
end;

//******************************************************************************
procedure ThdfPrayTimes.SetLatitude(const ValueDouble);
begin
  FLatitude 
:= Value;
end;

//******************************************************************************
procedure ThdfPrayTimes.SetLongitude(const ValueDouble);
begin
  FLongitude 
:= Value;
end;

//******************************************************************************
procedure ThdfPrayTimes.SetMaghribAngle(AngleDouble);
var
  
MethodParamRecordThdfMethodParamRecord;
begin
  MethodParamRecord
.FajrAngle := 0;
  
MethodParamRecord.MaghribSelector := 0;
  
MethodParamRecord.MaghribParameterValue := Angle;
  
MethodParamRecord.IshaSelector := 0;
  
MethodParamRecord.IshaParameterValue := 0;

  
SetCustomParams(MethodParamRecord);
end;

//******************************************************************************
procedure ThdfPrayTimes.SetMaghribMinutes(minutesDouble);
var
  
MethodParamRecordThdfMethodParamRecord;
begin
  MethodParamRecord
.FajrAngle := 0;
  
MethodParamRecord.MaghribSelector := 1;
  
MethodParamRecord.MaghribParameterValue := Minutes;
  
MethodParamRecord.IshaSelector := 0;
  
MethodParamRecord.IshaParameterValue := 0;

  
SetCustomParams(MethodParamRecord);
end;

//******************************************************************************
procedure ThdfPrayTimes.SetTimeZone(const ValueDouble);
begin
  FTimeZone 
:= Value;
end;

//******************************************************************************
function ThdfPrayTimes.SunDeclination(AJulianDateDouble): Double;
begin
    Result 
:= SunPosition(AJulianDate).Declination;
end;

//******************************************************************************
function ThdfPrayTimes.SunPosition(AJulianDateDouble): ThdfSunPosition;
var
  
DDouble;
  
gDouble;
  
qDouble;
  
LDouble;
  
RDouble;
  
eDouble;
  
RADouble;
  
EqTDouble;
  
DeclinationDouble;
begin
    D 
:= AJulianDate 2451545.0;  // jd is the given Julian date
    
:= FixAngle(357.529 0.98560028 D);
    
:= FixAngle(280.459 0.98564736 D);
    
:= FixAngle(1.915 DSin(g) + 0.020 DSin(g)); // L is an approximation to the Sun's geocentric
                                                            // apparent ecliptic longitude (adjusted for aberration)
    
:= 1.00014 0.01671 DCos(g) - 0.00014 DCos(g); // The distance of the Sun from the Earth, in astronomical units (AU)
    
:= 23.439 0.00000036 D;  // mean obliquity of the ecliptic, in degrees

    
Declination := DArcsin(DSin(e) * DSin(L));
    
RA := DArctan2(DCos(e) * DSin(L), DCos(L)) / 15// the Sun's right ascension
    
RA := FixHour(RA);
    
EqT := q/15 RA// The Equation of Time

    
Result.Declination := Declination;
  
Result.EquationOfTime := EqT;
  
Result.DistanceFromEarth := R;
end;

//******************************************************************************
function ThdfPrayTimes.timeDiff(Time1Time2Double): Double;
begin
  Result 
:= FixHour(Time2 Time1);
end;

//******************************************************************************
function ThdfPrayTimes.TwoDigitsFormat(NumInteger): string;
begin
  Result 
:= IntToStr(Num);
  if 
Num 10 then
  begin
    Result 
:= '0' Result;
  
end;
end;

//******************************************************************************
end









رد مع اقتباس
قديم 2013-08-21, 11:20   رقم المشاركة : 5
معلومات العضو
louisa20
عضو مشارك
 
إحصائية العضو










افتراضي

بارك الله فيك










رد مع اقتباس
قديم 2013-08-24, 18:47   رقم المشاركة : 6
معلومات العضو
~أمة الله~
عضو مميّز
 
الصورة الرمزية ~أمة الله~
 

 

 
إحصائية العضو










افتراضي

اللهم بارك ، تم التحميل
والبرنامج طيب ...جعله الله في ميزان حسناتكم...











رد مع اقتباس
قديم 2013-08-25, 10:16   رقم المشاركة : 7
معلومات العضو
__الهاوي__
أستــاذ
 
الصورة الرمزية __الهاوي__
 

 

 
إحصائية العضو










افتراضي

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









رد مع اقتباس
قديم 2013-08-27, 21:55   رقم المشاركة : 8
معلومات العضو
__الهاوي__
أستــاذ
 
الصورة الرمزية __الهاوي__
 

 

 
إحصائية العضو










افتراضي

تم إضافة نسخة جديدة مع تحسينات
أرجو ممن جرب البرنامج أن يعلمني إن اشتغل أم لا









رد مع اقتباس
قديم 2013-08-28, 10:58   رقم المشاركة : 9
معلومات العضو
arba7na
عضو مشارك
 
الصورة الرمزية arba7na
 

 

 
إحصائية العضو










افتراضي

شكرا لك أخي










رد مع اقتباس
قديم 2013-08-28, 17:41   رقم المشاركة : 10
معلومات العضو
MHDM
عضو مشارك
 
الصورة الرمزية MHDM
 

 

 
إحصائية العضو










افتراضي

السلام عليكم

اهنئك على برنامجك الجديد

البرنامج شغال

كما قلت يحتاج

net framework 4.0

شكرا لك بانتضار جديدك










رد مع اقتباس
قديم 2013-09-11, 08:26   رقم المشاركة : 11
معلومات العضو
ASKme
عضو مميّز
 
إحصائية العضو










افتراضي

اقتباس:
المشاركة الأصلية كتبت بواسطة mhdm مشاهدة المشاركة
السلام عليكم

اخي __الهاوي__

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

لا لمثل هذه الردود المحبطة





فل تقل خيرا او لتصمت
ارايت ردي هو الذي حفزك للتطوير
برغم هذا مازال فيه بعض النقائص









رد مع اقتباس
قديم 2013-09-11, 10:25   رقم المشاركة : 12
معلومات العضو
ASKme
عضو مميّز
 
إحصائية العضو










افتراضي

قمت بتحويل الوحدة CalcPrayerTimes.cs وقمت بتغيير بعض المتغيرات الى الدلفي وقمت بتجربتها
لاكني ساضيف المزيد لها

كود PHP:
function CalcPrayerTimes(anydate:TDateTime;Long,  LatZone:Real):TPraytime;
  var 
D,L,M,Lambda,Obliquity,Alpha,ST,Dec,Durinal_Arc,Noon,UT_Noon,Local_Noon,Asr_Alt,Asr_Arc
  
,Asr_Time,Sun_Rise,Sun_Set,Esha_Arc,Esha_Time,Fajr_Arc,Fajr_Time:Real;
  
YearMonth,Day:Word;
           
begin

           DecodeDate
(anydateYearMonthDay);
             
:= (367 Year) - Trunc((Year + ((Month 9) / 12)) * 4) + ((Trunc(275 Month 9)) + Day 730531.5);
             
:= RealMod((280.461 0.9856474 D) , 360);
             
:= LessMore360(L);
             
:= RealMod((357.528 0.9856003 D) , 360);
            
:= LessMore360(M);
            
Lambda := 1.915 Sin(ToRadian(M)) + 0.02 Sin(ToRadian(M));
            
Lambda := LessMore360(Lambda);
             
Obliquity := 23.439 0.0000004 D;
             
Alpha := ToDegree(Arctan((Cos(ToRadian(Obliquity)) * Tan(ToRadian(Lambda)))));//////
            
Alpha := LessMore360(Alpha);
            
Alpha := Alpha - (360 Trunc(Alpha 360));
            
Alpha := (Alpha 90 * (Floor(Lambda 90) - Floor(Alpha 90)));
             
ST := RealMod((100.46 0.985647352 D) , 360);
             
Dec := ToDegree(Arcsin(Sin(ToRadian(Obliquity)) * Sin(ToRadian(Lambda))));
             
Durinal_Arc := ToDegree(ArcCos((Sin(ToRadian(-0.8333)) - Sin(ToRadian(Dec)) * Sin(ToRadian(Lat))) / (Cos(ToRadian(Dec)) * Cos(ToRadian(Lat)))));
             
Noon := Alpha ST;
            
Noon := LessMore360(Noon);
             
UT_Noon := Noon Long;
            
Local_Noon := UT_Noon 15 Zone;
             
Asr_Alt := ToDegree(Arctan(Tan(ToRadian(Lat Dec))));
             
Asr_Arc := ToDegree(Arccos((Sin(ToRadian(90 Asr_Alt)) - Sin(ToRadian(Dec)) * Sin(ToRadian(Lat))) / (Cos(ToRadian(Dec)) * Cos(ToRadian(Lat)))));
            
Asr_Arc := Asr_Arc 15;
            
Asr_Time := Local_Noon Asr_Arc;
            
Sun_Rise := Local_Noon - (Durinal_Arc 15);
            
Sun_Set := Local_Noon + (Durinal_Arc 15);
            
Esha_Arc := ToDegree(Arccos((Sin(ToRadian(-18)) - Sin(ToRadian(Dec)) * Sin(ToRadian(Lat))) / (Cos(ToRadian(Dec)) * Cos(ToRadian(Lat)))));
            
Esha_Time := Local_Noon + (Esha_Arc 15);
            
Fajr_Arc := ToDegree(Arccos((Sin(ToRadian(-18)) - Sin(ToRadian(Dec)) * Sin(ToRadian(Lat))) / (Cos(ToRadian(Dec)) * Cos(ToRadian(Lat)))));
            
Fajr_Time := Local_Noon - (Fajr_Arc 15); 









رد مع اقتباس
قديم 2013-09-11, 23:47   رقم المشاركة : 13
معلومات العضو
ASKme
عضو مميّز
 
إحصائية العضو










افتراضي

على كل حال هناك اخطاء بسيطة

  • الجولاني يوم ((Year + (int)((Month + 9) / 12)) * 7 / 4) الشرط ان لاتكون عشرية اضف لها int
  • طريقة حساب البرنامج حسب جامعة العلوم الإسلامية بكراتشي والاصح رابطة
  • العالم الإسلامي اي تغير 18 الى 17
اهم خاصية الوقت المتبقي للصلاة المتقبلة غير موجودة









رد مع اقتباس
قديم 2014-06-28, 21:34   رقم المشاركة : 14
معلومات العضو
حرهوب
عضو جديد
 
إحصائية العضو










افتراضي السلام عليكم

أشكرك على البرنامج الرائع والله اشكرك على مجهودك الجميل
انا مهتم بالبرمجة و برمجة برنامج اسمه دليلك في شهر رمضان
ناقصي الجزء الاهم منه الي هو مواقيت الاذان
ياليت طلباً وليس امراً ابي شرح منك فيديو كيف اسوي برنامج مواقيت
انا خذيت السورس حقك ماعرفت كيف اعدله وانا مبتدأ في البرمجة
وابي ابرمج برنامج الاذان لدول السعوديه وياليت تساعدني جزاك الله خير وشكرا...!










رد مع اقتباس
قديم 2014-07-01, 18:08   رقم المشاركة : 15
معلومات العضو
__الهاوي__
أستــاذ
 
الصورة الرمزية __الهاوي__
 

 

 
إحصائية العضو










افتراضي

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









رد مع اقتباس
إضافة رد

الكلمات الدلالية (Tags)
الأذان, المعجم, بالصح, برنامج, صارت


تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة

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

الساعة الآن 09:25

المشاركات المنشورة تعبر عن وجهة نظر صاحبها فقط، ولا تُعبّر بأي شكل من الأشكال عن وجهة نظر إدارة المنتدى
المنتدى غير مسؤول عن أي إتفاق تجاري بين الأعضاء... فعلى الجميع تحمّل المسؤولية


2006-2023 © www.djelfa.info جميع الحقوق محفوظة - الجلفة إنفو (خ. ب. س)

Powered by vBulletin .Copyright آ© 2018 vBulletin Solutions, Inc