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

كيف اعرف عدد ايام الشهر

بدأه زكيري عبد العالي في 7 مايو 2008 · 6 رد · 950 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

هل هناك من طريقة اسهل ومختصرة لعمل هدا

Function NbJourDansMois(LeMois:integer; LeAnnee:integer):integer;
 begin
   Case (LeMois) of
	 4, 6, 9, 11 : NbJourDansMois := 30;	   //'Avril, Juin, Septembre, Novembre
	 2:begin	   //' Février
	   if (LeAnnee Mod 4 = 0) And (LeAnnee Mod 100 <> 0) Or (LeAnnee Mod 400 = 0) Then // ' Si Bisextile
		   NbJourDansMois := 29
	   Else // Sinon
		   NbJourDansMois := 28;
	   end;
	   else//' Les autres mois
		   NbJourDansMois := 31;

	end;
end;

شكرا

#2

هده بالفيبي من يستطيع تحويلها فانا لم استطع

' 
 Public Function DaysInMonth(ByVal nMonth As Integer, ByVal nYear As Integer) As Integer 
	   DaysInMonth = Day(DateAdd("d", -1, DateAdd("m", 1, DateSerial(nYear, nMonth, 1)))) 
  End Function

تم تعديل هذه المشاركة بواسطة زكيري عبد العالي في 7 مايو 2008 في 16:33

#4

السلام عليكم

استعمل أخي DaysInMonth مع إضافة DateUtils في uses

مثلا استعملها مع TDateTimePicker

Label1.Caption := inttostr(DaysInMonth(DateTimePicker1.Date));

أنظر داخل الوحدة DateUtils فهي تحتوي على إجراءات عديدة فيما يخص الوقت و الزمن

تحياتي :)

#5

السلام عليكم

شكرا اخي مروان فعلا انها مختصرة لكن عدد اسطر كل الوظاءف المستخدمه في هده الوضيفة كثيرة في صفحتين تقريبا ساستخدم الاولى

شكرا مرة اخري لم اكن اعرف وجود DaysInMonth

اقتباس
لماذا تمت إضافة رقم 2 في هذا الجزء ؟

نعم هي تابعة ل

case

L'instruction case propose une alternative plus lisible à l'utilisation de conditions if très imbriquées. Une instruction case a la forme

case expressionSelection of
	listeCas1: instruction1;
	  ...
	listeCasn: instructionn;
	end

تم تعديل هذه المشاركة بواسطة زكيري عبد العالي في 9 مايو 2008 في 13:28

#6
اقتباس
شكرا اخي مروان فعلا انها مختصرة لكن عدد اسطر كل الوظاءف المستخدمه في هده الوضيفة كثيرة في صفحتين تقريبا ساستخدم الاولى

شكرا مرة اخري لم اكن اعرف وجود DaysInMonth

الفرق بين الطريقتين أنك إستخدمت جملة case بينما DaysInMonth تستخدم array تحفظ فيها قيم عدد أيام الأشهر

الكود كالآتي :

type
  PDayTable = ^TDayTable;
  TDayTable = array[1..12] of Word;
const
  MonthDays: array [Boolean] of TDayTable =
	((31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31),
	 (31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31));

...
function IsLeapYear(Year: Word): Boolean;
begin
  Result := (Year mod 4 = 0) and ((Year mod 100 <> 0) or (Year mod 400 = 0));
end;
function DaysInAMonth( AYear, AMonth: Word): Word;
begin
  Result := MonthDays[(AMonth = 2) and IsLeapYear(AYear), AMonth];
end;

الكود مأخوذ من DateUtils و SysUtils مع تغيير بسيط في DaysInAMonth ...

"First they ignore you, then they laugh at you, then they attack you, then you win"

===

اقتباس

حُكَّامُـنَا إِنْ تَصَـدّوا لِلْحِمَــى اقْتَحَمُـوا ***** وَإِنْ تَصَدَّى لَـهُ المُسْتَعْمِـرُ انْسَحَبُـوا

هُمْ يَفْرشـُونَ لِجَيْـشِ الغَــزْوِ أَعْيُنَـهُـمْ ***** وَيَدَّعُــونَ وُثُـوبَـاً قَـبْـلَ أَنْ يَثِـبُــوا

الحَاكِمُـونَ و«وَاشُنْـطُـنْ» حُكُومَتُـهُـمْ ***** وَاللامِعُــونَ وَمَـا شَعَّـوا وَلا غَرَبُــوا

القَاتِلُـــونَ نُبُــوغَ الشَّـعْــبِ تَرْضِـيَـــةً ***** لِلْمُعْتَدِيــنَ وَمَـا أَجْـدَتْـهُـمُ الـقُــرَبُ

لَهُمْ شُمُـوخُ «المُثَنَّـى» ظَاهِـرَاً وَلَهُـمْ ***** هَـوَىً إِلَـى بَابَـك الخَرْمِـيّ يُنْتَسَـبُ

البردوني "أبو تمام وعروبة اليوم" 1971

===

اقتباس
عبيد الهوى يحكمون البـلاد ***** ويحكمهــم كلّهـــم درهــــــم

و تقتـادهـم شهـوة لا تنــام ***** وهـــم فـي جـهالتهــم نــــوّم

ففــي كـــلّ ناحيــة ظـالـــم ***** غبــــــيّ يسـلـّطــــه أظلـــم

أيا من شبعتم على جوعــنا ***** وجـــوع بنينـا ألـم تتخمـــوا ؟

ألم تفهموا غضبة الكادحين ***** على الظلـم ؟ لا بدّ أن تفهموا

البردوني "نحن و الحاكمون "

#7

شكرا على الرد اخي cipher

فعلا كما قلت

لم انتبه جدا هدا لسرعة والتسرع :mellow:

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