كيف يمكنني تحويل 217782178 ثانية لمعرفة ان هذا العدد من الثوان هو كم سنة وشهر ويوم وساعة ودقيقة وثانية.
نحويل الثواني لسنين واشهر وأيام وساعات ودقائق
procedure TForm1.Button1Click(Sender: TObject);
var
TheDateInFuture: TDateTime;
begin
TheDateInFuture := IncSecond(Today,217782178);
....:= YearsBetween(Today, TheDateInFuture);
....:= MonthsBetween(Today, TheDateInFuture);
....:= DaysBetween(Today, TheDateInFuture);
..........
end;
شكرا أخي معتز على الرد ولكن بقيت مشكلة
المود الذي ذكرته يطرح سنة اليوم من العدد المذكور
ثم يطرح شهر اليوم من العدد المذكور
وهكذا
مما يعني نفس القيمة متكررة ولكن مرة بالسنني ومرة بالأشهر ومرة الأيام وهكذا بينما أنا أريد أن أعرف كم هي المدة بالسنين والأشهر والأيام و.. و.. الموجودة في الرقم المذكور.
مع خالص الشكر
أخي الكريم،
لقد قربت لك الفكرة وبينت لك الدوال المتوفرة في ديلفي والتي يمكنك إستخدامها للوصول إلى النتيجة المطلوبة.
إذا حاولت التفكير قليلاً لأمكنك تنفيذ المطلوب، هل كنت تتوقع حل كامل متكامل؟
شكرا أخي
يبدو أني لا زلت ومنذ أيام المدرسة أكره الرياضيات وعمليات الحساب
على كل حال دعني أحاول هذه المرة
مع الشكر
و في حال لم تجده، أخبرني لأن فكرة الحل عندي ;-)
أخي الكريم،
لن أصعب الأمر أكثر من اللازم، الحل هو التالي:
procedure TForm1.Button1Click(Sender: TObject);
var
TheDateInFuture, TheCalculatedDate: TDateTime;
YearsCount, MonthsCount, DaysCount, HoursCount, MinutesCount,
SecondsCount: Integer;
TheYearNow, TheMonthNow,TheDayNow,TheMinuteNow,
TheSecondNow, TheMilliSecondNow, TheHourNow :Word;
TheYearThen, TheMonthThen, TheDayThen,TheMinuteThen,
TheSecondThen, TheMilliSecondThen, TheHourThen :Word;
begin
TheDateInFuture := IncSecond(Today, 217782178);
DecodeDateTime(Today, TheYearNow, TheMonthNow, TheDayNow, TheHourNow,TheMinuteNow,
TheSecondNow, TheMilliSecondNow);
DecodeDateTime(TheDateInFuture, TheYearThen, TheMonthThen, TheDayThen, TheHourThen, TheMinuteThen,
TheSecondThen, TheMilliSecondThen);
{Here you will probably get some negative values !!}
YearsCount := (TheYearThen - TheYearNow) ;
MonthsCount := (TheMonthThen - TheMonthNow);
DaysCount := (TheDayThen - TheDayNow) ;
HoursCount := TheHourThen - TheHourNow;
MinutesCount := TheMinuteThen - TheMinuteNow;
SecondsCount := TheSecondThen - TheSecondNow;
TheCalculatedDate := EncodeDateTime( TheYearNow + YearsCount , TheMonthNow + MonthsCount,
TheDayNow + DaysCount, TheHourNow + HoursCount,
TheMinuteNow + MinutesCount, SecondsCount,0) ;
{Just to verify the results, It should be the same}
ShowMessage(DateTimeToStr(TheDateInFuture ));
ShowMessage(DateTimeToStr(TheCalculatedDate ));
end;
شكرا أخي معتز جدا جدا جدا
لقد جربته وعمل بشكل ممتاز والآن بإمكاني أن أعرف متى تموت بطارية كمبيوتري النقال!!!!!
تصور أني قبل أن أستلم الرد منك كنت قد جهزت أوراقي وقلمي وعزمت على (السهر) لحل هذه الشفرة.
أنا أكرررررررره الرياضيات
شكرا مرة أخرى
هل أبعث لك عنواني البريدي لترسل لي بأوراقك وقلمك كهديه ;)
إذا كانت العملية من أجل حساب العمر الإفتراضي لبطارية كومبيوترك النقال، فهناك معاملات أخرى يجب إدخالها في المعادلة، درجة الحرارة و الرطوبة أثناء التشغيل وأثناء التخزين :)
تم تعديل هذه المشاركة بواسطة Mo3taz في 25 أكتوبر 2003 في 01:08
هذا الموضوع مغلق.