مشاهدة النسخة كاملة : استخدام timer لأنجاز مهمه
كيف ممكن أن استخدم مقياس وقت لإنجاز مهمه معينه
أستخدمت TTimer component لكني للأسف لا أعرف ما هو الكود الذي يجب أن استخدمه لقياس الوقت الذي أنجز فيه مهمه معينه وأين يجب أن أضع هذا الكود
يعني مثلا عندي button معين إذا ضغطت عليه يحسب معادله معينه ويظهر النتيجه
المطلوب هو قياس الوقت من ضغط هذا الزر إلى أن تخرج النتيجه مع ظهور النتيجه على واجهة البرنامج في Panel
جزاكم الله خيرا
Dr.MOT
02-05-2009, 11:33 AM
اخي على حسب فهمي للسؤال ,,
فأنت تريد عند الضغط على الزر أن يبدأ يحسب ,, وبعد الانتهاء والضغط على زر آخر مثلا يظهر الوقت !؟
أولا لا تنسى : غير الخاصية Enabled إلى False للتآيمر
وتأكد أن الخاصية Inetval للتآيمر = 1000 >> هذا يعني ثانية واحدة
التآيمر :
procedure TForm1.Timer1Timer(Sender: TObject);
begin
i := i + 1 ; //حساب عدد الثواني حيث عند كل ثانية يزيد واحد
end;
الزر الأول ( زر البدء ) :
procedure TForm1.Button1Click(Sender: TObject);
begin
Timer1.Enabled := True ; //بدء عمل التآيمر
end;
الزر الثاني ( زر الإيقاف وإظهار الوقت ) :
procedure TForm1.Button2Click(Sender: TObject);
begin
Timer1.Enabled := False; //إيقاف عمل التآير
ShowMessage(IntToStr(i) + ' Sec'); //إظهار رسالة بالوقت المستغرق
end;
ولكن لا تنسى أن تتأكد أن يكون تعريف المتغير i عام ,, أي هنا :
var
Form1: TForm1;
i : integer ;
implementation
-------------------------
والسلام عليكم ,, وعذرا على الإطالة
المطلوب (حساب الوقت لتنفيذ العمليه)
يعني يبدأ التيمر يحسب الوقت عند الضغط على الزر لتنفيذ العمليه وبمجرد انتهاء العمليه وظهور النتيجه على ال Richedit يظهر الوقت الذي تمت فيه العمليه ، **** أن أكون وضحت المطلوب
وجزاك الله الف خير
AL-MOB4RM3G
02-05-2009, 01:26 PM
المطلوب (حساب الوقت لتنفيذ العمليه)
يعني يبدأ التيمر يحسب الوقت عند الضغط على الزر لتنفيذ العمليه وبمجرد انتهاء العمليه وظهور النتيجه على ال richedit يظهر الوقت الذي تمت فيه العمليه ، **** أن أكون وضحت المطلوب
وجزاك الله الف خير
اذا ممكن عمل ذلك بكل سهلوة والله اعلم,,
بدل من ان تستخدم 2 من الأزرار كما فعل الأخ دوكتور موت,, استخدم الأولى في بداية العملية و الثانية في نهايتها,, يعني في نفس الحدث,, وتنحل المشكلة,,
ان شاء الله الفكرة واضحة؟
لكن يبقى السؤآل,, هل العملية ستأخذ ثواني ام دقأئق,, ام بضع من الثواني ؟ هذا يعود اليك ,,
بارك الله لكم
نعم جزاك الجنه فعلا سوالك هو المشكله التي اواجهها الان
لأن العمليه عندي تأخذ جزء من الثانيه ولذلك النيجه عندي تظهر صفر
كما أعرف في ال C++ نوع المتغير هو الذي يتحكم في العمليه وهناك نستخدم float type فهل في الدلفي نفس الشيء
AL-MOB4RM3G
02-05-2009, 05:09 PM
نعم جزاك الجنه فعلا سوالك هو المشكله التي اواجهها الان
نعم لا عليكم اخي الكريم,, وفيكم بارك الله
كما أعرف في ال C++ نوع المتغير هو الذي يتحكم في العمليه وهناك نستخدم float type فهل في الدلفي نفس الشيء
والله انا لا اعرف شئ عن السي ++ ولهذا لا استطيع ان افيدك في هذه النقطة,, اعذرني,,
لأن العمليه عندي تأخذ جزء من الثانيه ولذلك النيجه عندي تظهر صفر
نعم اخي الكريم,,
اعلم كما ذكر لك الأخ دوكتور موت من قبل,, في التايمر 1000 يساوى ثانية واحدة,,
وعمليتك انت هي اقل من الثانية,,
هل ينفع عشر الثانية ؟
اذا ما عليك الّى ان تظبط الخاصّيّة intervall الى 100,,, حينها يتم استنتاج عشر الثانية,,,
يعني بكلامة آخر,, الثنية الواحدة تعطي 10 احتمالات,,
وهكذا مع البقيّة ,, ان ضبطه الى 10 ,, يصبح الناتج هو 100 احتمال,,, لأن 100 * 10 = 1000,,,
ان شاء الله الأمر واضح الآن ؟
وان كان هناك اي استفسار فأنا جاهز ان شاء الله,, والإخوة لن يقصّرو,,
بارك الله لكم وبكم
والسلام عليكم ورحمة الله
أنا أقصد لكي تظهر على شكل جزء من الثانيه يجب أن تكون في هذا الشكل (0.00 ) وهذا لا يمكن ظهوره اذا كان المتغير من نوع Integer فما هو النوع الذي يجب استخدمه
AL-MOB4RM3G
02-05-2009, 07:47 PM
أنا أقصد لكي تظهر على شكل جزء من الثانيه يجب أن تكون في هذا الشكل (0.00 ) وهذا لا يمكن ظهوره اذا كان المتغير من نوع Integer فما هو النوع الذي يجب استخدمه
اها نعم الآن فهمت,,
صراحة يا اخي الغالي,, لا اعلم حلّ جيدا لهذا الغرض,, ان شاء الله الإخوة يفيدونا في هذا المجال,,
الّى انه ممكن استخدام خدعة,, ولكن ليست جيّدة ولا انصح بستخدامها,,
وهي الإستفادة من مثلا 3 label و 3 timer ,, نعم وانت تدري البقيّية,, لكن كما قلت سابقا,,
هذا ليس حلّ جيدا,, وننتظر الإخوة ان يفيدونا في هذا المجال,,
بارك الله فيكم جميعا,,
Maher Tannous
03-05-2009, 09:14 AM
ربما يفيدك المثال الذي في المرفقات
بإمكانك التعديل على المثال
مثلاً وضع interval للتايمر على 100
و في الحدث تايمر لتايمر كتابة مايلي :
label1.Caption:=floattostr(i/10);
Maher Tannous
03-05-2009, 09:25 AM
يمكن أيضاً تحويل الأرقام التي تظهر في label
إلى عداد لساعة نظامية
يعني ثواني و أجزاء الثانية
تفضل في المرفقات
AL-MOB4RM3G
03-05-2009, 10:10 AM
بارك الله فيكم اخي Maher Tannous ,, مثال رآئع ومفيد ما شاء الله عليك,,
بارك الله لك,,
vBulletin® , Copyright ©2008-2012