delphi4arab منتديات دلفي للعرب
استخدام timer لأنجاز مهمه - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : استخدام timer لأنجاز مهمه (/showthread.php?tid=860)

الصفحات: 1 2


استخدام timer لأنجاز مهمه - NOna - 02-05-2009

كيف ممكن أن استخدم مقياس وقت لإنجاز مهمه معينه

أستخدمت TTimer component لكني للأسف لا أعرف ما هو الكود الذي يجب أن استخدمه لقياس الوقت الذي أنجز فيه مهمه معينه وأين يجب أن أضع هذا الكود
يعني مثلا عندي button معين إذا ضغطت عليه يحسب معادله معينه ويظهر النتيجه
المطلوب هو قياس الوقت من ضغط هذا الزر إلى أن تخرج النتيجه مع ظهور النتيجه على واجهة البرنامج في Panel

جزاكم الله خيرا


استخدام timer لأنجاز مهمه - Dr.MOT - 02-05-2009

اخي على حسب فهمي للسؤال ,,

فأنت تريد عند الضغط على الزر أن يبدأ يحسب ,, وبعد الانتهاء والضغط على زر آخر مثلا يظهر الوقت !؟

أولا لا تنسى : غير الخاصية Enabled إلى False للتآيمر

وتأكد أن الخاصية Inetval للتآيمر = 1000 >> هذا يعني ثانية واحدة


التآيمر :

PHP كود :
procedure TForm1.Timer1Timer(Sender: TObject);
begin
 i 
:= i + 1 ;   //حساب عدد الثواني حيث عند كل ثانية يزيد واحد
end; 

الزر الأول ( زر البدء ) :

PHP كود :
procedure TForm1.Button1Click(Sender: TObject);
begin
Timer1
.Enabled := True ;   //بدء عمل التآيمر
end; 

الزر الثاني ( زر الإيقاف وإظهار الوقت ) :

PHP كود :
procedure TForm1.Button2Click(Sender: TObject);
begin
Timer1
.Enabled := False;     //إيقاف عمل التآير
ShowMessage(IntToStr(i) + ' Sec'); //إظهار رسالة بالوقت المستغرق
end; 


ولكن لا تنسى أن تتأكد أن يكون تعريف المتغير i عام ,, أي هنا :

PHP كود :
var
  
Form1: TForm1;
  
i : integer ;

implementation 

-------------------------

والسلام عليكم ,, وعذرا على الإطالة



استخدام timer لأنجاز مهمه - NOna - 02-05-2009

المطلوب (حساب الوقت لتنفيذ العمليه)
يعني يبدأ التيمر يحسب الوقت عند الضغط على الزر لتنفيذ العمليه وبمجرد انتهاء العمليه وظهور النتيجه على ال Richedit يظهر الوقت الذي تمت فيه العمليه ، **** أن أكون وضحت المطلوب
وجزاك الله الف خير


استخدام timer لأنجاز مهمه - AL-MOB4RM3G - 02-05-2009

nona كتب :المطلوب (حساب الوقت لتنفيذ العمليه)
يعني يبدأ التيمر يحسب الوقت عند الضغط على الزر لتنفيذ العمليه وبمجرد انتهاء العمليه وظهور النتيجه على ال richedit يظهر الوقت الذي تمت فيه العمليه ، **** أن أكون وضحت المطلوب
وجزاك الله الف خير

اذا ممكن عمل ذلك بكل سهلوة والله اعلم,,

بدل من ان تستخدم 2 من الأزرار كما فعل الأخ دوكتور موت,, استخدم الأولى في بداية العملية و الثانية في نهايتها,, يعني في نفس الحدث,, وتنحل المشكلة,,

ان شاء الله الفكرة واضحة؟

لكن يبقى السؤآل,, هل العملية ستأخذ ثواني ام دقأئق,, ام بضع من الثواني ؟ هذا يعود اليك ,,

بارك الله لكم


استخدام timer لأنجاز مهمه - NOna - 02-05-2009

نعم جزاك الجنه فعلا سوالك هو المشكله التي اواجهها الان
لأن العمليه عندي تأخذ جزء من الثانيه ولذلك النيجه عندي تظهر صفر
كما أعرف في ال C++ نوع المتغير هو الذي يتحكم في العمليه وهناك نستخدم float type فهل في الدلفي نفس الشيء


استخدام timer لأنجاز مهمه - AL-MOB4RM3G - 02-05-2009

إقتباس :نعم جزاك الجنه فعلا سوالك هو المشكله التي اواجهها الان

نعم لا عليكم اخي الكريم,, وفيكم بارك الله

إقتباس :كما أعرف في ال C++ نوع المتغير هو الذي يتحكم في العمليه وهناك نستخدم float type فهل في الدلفي نفس الشيء

والله انا لا اعرف شئ عن السي ++ ولهذا لا استطيع ان افيدك في هذه النقطة,, اعذرني,,
إقتباس :لأن العمليه عندي تأخذ جزء من الثانيه ولذلك النيجه عندي تظهر صفر

نعم اخي الكريم,,

اعلم كما ذكر لك الأخ دوكتور موت من قبل,, في التايمر 1000 يساوى ثانية واحدة,,

وعمليتك انت هي اقل من الثانية,,

هل ينفع عشر الثانية ؟

اذا ما عليك الّى ان تظبط الخاصّيّة intervall الى 100,,, حينها يتم استنتاج عشر الثانية,,,

يعني بكلامة آخر,, الثنية الواحدة تعطي 10 احتمالات,,

وهكذا مع البقيّة ,, ان ضبطه الى 10 ,, يصبح الناتج هو 100 احتمال,,, لأن 100 * 10 = 1000,,,


ان شاء الله الأمر واضح الآن ؟

وان كان هناك اي استفسار فأنا جاهز ان شاء الله,, والإخوة لن يقصّرو,,

بارك الله لكم وبكم

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


استخدام timer لأنجاز مهمه - NOna - 02-05-2009

أنا أقصد لكي تظهر على شكل جزء من الثانيه يجب أن تكون في هذا الشكل (0.00 ) وهذا لا يمكن ظهوره اذا كان المتغير من نوع Integer فما هو النوع الذي يجب استخدمه


استخدام timer لأنجاز مهمه - AL-MOB4RM3G - 02-05-2009

NOna كتب :أنا أقصد لكي تظهر على شكل جزء من الثانيه يجب أن تكون في هذا الشكل (0.00 ) وهذا لا يمكن ظهوره اذا كان المتغير من نوع Integer فما هو النوع الذي يجب استخدمه

اها نعم الآن فهمت,,

صراحة يا اخي الغالي,, لا اعلم حلّ جيدا لهذا الغرض,, ان شاء الله الإخوة يفيدونا في هذا المجال,,

الّى انه ممكن استخدام خدعة,, ولكن ليست جيّدة ولا انصح بستخدامها,,

وهي الإستفادة من مثلا 3 label و 3 timer ,, نعم وانت تدري البقيّية,, لكن كما قلت سابقا,,

هذا ليس حلّ جيدا,, وننتظر الإخوة ان يفيدونا في هذا المجال,,

بارك الله فيكم جميعا,,


استخدام timer لأنجاز مهمه - Maher Tannous - 03-05-2009

ربما يفيدك المثال الذي في المرفقات
بإمكانك التعديل على المثال
مثلاً وضع interval للتايمر على 100
و في الحدث تايمر لتايمر كتابة مايلي :
PHP كود :
label1.Caption:=floattostr(i/10); 



استخدام timer لأنجاز مهمه - Maher Tannous - 03-05-2009

يمكن أيضاً تحويل الأرقام التي تظهر في label
إلى عداد لساعة نظامية
يعني ثواني و أجزاء الثانية
تفضل في المرفقات