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

دالة حساب العمر . اليوم . الشهر . السنة

بدأه saiddsa3980 في 18 أبريل 2008 · 4 رد · 7,616 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

إخواني عندي دالة تحسب العمر باليوم والشهر والسنة أردت التعديل عليها لكني لم أنجح

أريد أن أدخل تاريخ الميلاد في EDIT1

وتاريخ اليوم الحالي في EDIT2

والناتج يكون في EDIT3 ** يوم ** شهر ** سنة

procedure TForm1.Button1Click(Sender: TObject);
var dateN,dateF:TDateTime;
	  i:Integer;
begin
dateN:=EncodeDate(DateDeNaissance);  
dateF:=EncodeDate(Date);
i:=Trunc(dateN)-Trunc(dateF);
ShowMessage(IntToStr(i));
end;

تم تعديل هذه المشاركة بواسطة B.M.AbdelAziZ في 18 أبريل 2008 في 19:24

قال الحسن البصري : يا إبن آدم إنما أنت أيام إذا ذهب يومك ذهب بعضك

#2

ما يكتب في Edit1 يكون على شكل نص String ولتحويله لتاريخ+وقت TDateTime نستخدم DateToStr

dateN:=StrToDate(Edit1.Text);

ونفس الشيئ بالنسبة للتاريخ الثاني الموجود في Edit2

dateF:=StrToDate(Edit2.Text);

الان طرح عدد التاريخ الثاني من التاريخ الاول يعطينا عدد الايام بالفاصلة

i := Trunc(DateF-DateN);

لك يل اتحدث مشاكل مع بعض الاجهزة مع اختلاف اعدادات التاريخ يمكنك اضافة هذين الامرين في البداية

   DateSeparator:='/';
   ShortDateFormat:='DD/MM/YYYY';

الان عندك في المتغير i عدد الايام عليك بتغييره الى سنين وشهور وايام :lol:

والسلام عليكم ورحمة الله

d4baa0.gif
#3

مشكور أخي على المساعدة لكني لم أصل إلى حل نهائي قمت بالتعديل على الكود كتالي :

procedure TForm1.Button1Click(Sender: TObject);

var dateN,dateF:TDateTime;

i:Integer;

begin

dateN:=StrToDate(Edit1.Text);

dateF:=StrToDate(Edit2.Text);

i := Trunc(DateF-DateN);

ShowMessage(DateToStr(i));

end;

end.

ياريت يكون الناتج كتالي :

عدد الأيام : **

عدد الأشهر : **

عدد السنوات : **

بارك الله فيك أخي جزاك الله كل الخير

قال الحسن البصري : يا إبن آدم إنما أنت أيام إذا ذهب يومك ذهب بعضك

#4
saiddsa3980 كتب:
ياريت يكون الناتج كتالي :

عدد الأيام : **

عدد الأشهر : **

عدد السنوات : **

ياريت تفكر قليلا:

لديك عدد من الايام ، كيف تحولها الى سنوات و اشهر وكم يبقى من يوم

فكر بورقة وقلم،

انسى البرمجة ودلفي

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

بالتوفيق

d4baa0.gif
#5

بارك الله فيك أخي على النصيحة ، بقيت أبحث عن الحل وحدي ولم أجده حينها تذكرت أنه منذ ثلاثة سنوات قراءت موضوع في أحد الكتب يتحدث على التعليمتين div & mod

الأولى هي حاصل القسمة والثانية المتبقي من القسمة فقررت أن أستخدم هاتين التعليمتين ونجحت في النتيجة إليك الكود إن أردت أن تعدل عليه قليلاً ( أي تختصر منه بعض الكلمات )

procedure TForm1.Button1Click(Sender: TObject);

var dateN,dateF:TDateTime;

i,y,m,d,tmp,tmp1:Integer;

begin

dateN:=StrToDate(Edit1.Text);

dateF:=StrToDate(Edit2.Text);

i := Trunc(DateF-DateN);

y:= i div 366 ;

begin

tmp:=i mod 366;

tmp1:=tmp;

begin

m:=tmp1 div 30 ;

begin

d:=tmp1 mod 30 ;

label4.Caption:=(IntToStr(d));

label5.Caption:=(IntToStr(m));

label6.Caption:=(IntToStr(y));

end;

end;

end;

end;

end.

قال الحسن البصري : يا إبن آدم إنما أنت أيام إذا ذهب يومك ذهب بعضك

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…