delphi4arab منتديات دلفي للعرب

نسخة كاملة : مشكلة التايمر مع ارسال الاوأمر,,, كيف تجنب ضغط الجهاز ؟
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم ورحمة الله,,

اخواني الكرام,, سلام الله عليكم اجمعين,,

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

لإيجاد عنان مناسب,, سامحوني :o

نعم,, كنت اود ان اطرح هذه المشكلة التي بصراحة لم اجد لها حل مناسب بعد,,

مشكلة التايمر ,, + مشكلة الساعة مثلا,,

الكل يعلم ان التايمر يرسل آمر كل مدة تحدد من قبل المبرمج/المستخدم ,,

المراد هو بنسبة لي,, برنامج يقوم بعرض الساعة داخل edit ,,, + شئ آخر لا داعي لطرحه الآن,,,

لو فكرت قليلا,, ممكن وضعه في تايمر,,

ولكن هنا هي المشكلة,,, سترفع من ضغط البروسسور,, وو الى آخره.. وهذا هو الذي احاول تجنبه والله

المستعان,, هل هناك حل لمثل هذا الغرض,, لأنه سيتم استخدام التايمر كل ربع ثانية ان استخدت التايمر,,

وسيتم وضع اكثر من كود وهذا سيثقل البرنامج كثيرا,,

بارك الله فيكم جميعا وان شاء الله السؤآل واضح,؟؟

والسلام عليكم ورحمة الله
إقتباس :ولكن هنا هي المشكلة,,, سترفع من ضغط البروسسور,, وو الى آخره.. وهذا هو الذي احاول تجنبه والله
لم أفهم المشكلة !!!
kachwahed كتب :
لم أفهم المشكلة !!!

اخي الكريم.. لا عليك :eek:

كنت اقصد لو انه تم ارسال الأمر في التايمر,,, مثل,, كل 100 ,,, يعني 10 مرّات في الثانية الواحدة,,,

كود :
procedure TForm1.Timer1Timer(Sender: TObject); begin label1.Caption:= timetostr(time); end;

,, + انه ليس فقد هذا الآمر الذي اود ان ارسله,, بل هي اوامر عدة,,

,,

يعني سيتم ارسال عدة اوامر كبير 10 مرات في الثانية + انه سيتم عمل هذا من اثناء تشغيل البرنامج الى ان يتم اغلاقه,,,

الن يسبب هذا ثقل على اجهاز ؟ لأنه يتم ارسال اوامر كثيرا وبسرعة ؟

ان كان اجواب نعم ,, فسؤأل هو

ما هي الطريقة لتخلص من هذا,, ؟

ان شاء الله السؤأل واضح الآن اخي ؟

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

والسلام عليكم
ما يزال بعض الغموض في السؤال
إذا كنت بحاجة لعمل شيء "10 مرّات في الثانية الواحدة" فتلك هي الطريقة الوحيد
لكن ما الذي تريد أن تفعله 10 مرّات في الثانية الواحدة !!!
لعرض التوقيت الحالي يكفي أن تضبط Interval لـ Timer ليعرض كل ثانية (أقصد القيمة 1000) ولا حرج عليك إن شاء الله.
إذا أردت أن تعرف فيما إذا كان ذلك يثقل البرنامج أم فما عليك إلا بالتجريب وقديما قيل: إسأل مجرب ولا تسأل طبيب Smile
أرفق المثال لنتمكن من مساعدتك إن استطعنا.
إقتباس :لعرض التوقيت الحالي يكفي أن تضبط interval لـ timer ليعرض كل ثانية (أقصد القيمة 1000) ولا حرج عليك إن شاء الله.

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


إقتباس :إذا أردت أن تعرف فيما إذا كان ذلك يثقل البرنامج أم لا فما عليك إلا بالتجريب وقديما قيل: إسأل مجرب ولا تسأل طبيب

نعم هذا صحيح,, جربت هذا وبصراحة لم الاحظ ان الجهاز ثقيل,, ووضعت القيمة 1 ,, يعني 1000 مرة في الثانية ولم الاحظ فرق,, لعلّي مخطئ,, ولكن انا اتذكر جيدا انني قرأت موضوع هنا في المنتدى قال فيه احد الإخوة انه الجهاز يصبح ثقيل وهذا ما كنت اخشاه,, ولهذا طرحت السؤآل,, يعني سآمحوني,, سأحاول ايجاد المضوع ان استطعت,,

على كل حال بارك الله فيكم,,
و النتيجة بعد التجريب انه ليس هناك فرق,,
شكرا كثيرا والسلام عليكم ورحمة الله
إقتباس :ولكن اذا لاحظت,, اول ثانية في البرنامج لن يكون بها وقت
للتخلص من تلك المشكلة أكتب في الحدث OnActivate شيء مثل:
PHP كود :
StatuBar1.Panels[0].Text := DateTimeToStr(Now); 
هذا أفضل من عرض نفس التاريخ والتوقيت عشر مرات في كل ثانية Wink
kachwahed كتب :
للتخلص من تلك المشكلة أكتب في الحدث onactivate شيء مثل:
PHP كود :
statubar1.panels[0].text := datetimetostr(now); 
هذا أفضل من عرض نفس التاريخ والتوقيت عشر مرات في كل ثانية Wink

نعم صحيح بارك الله لكم,, فكرة مميّزة اخي الحبيب,,
لم تختر في بالي هذا الشئ,,, بارك الله فيك,,

وأشكرك كثيرا
السلام عليكم

لاكن هل الوقت يتغير بهده الطريقة اثناء سيران البرنامج ام لا .

شكرا .
PHP كود :
var
  
Form1: TForm1;
  
B: Boolean; 

PHP كود :
procedure TForm1.FormActivate(Sender: TObject);
begin
  repeat
     
if (Self <> nil)and(Self.Visible = Boolean(1)) then
         stat1
.Panels[1].Text := DateTimeToStr(Now);
         
Application.ProcessMessages;
  
until(B);
end; 

PHP كود :
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  B 
:= Boolean(1);
end; 
hanipino كتب :السلام عليكم

لاكن هل الوقت يتغير بهده الطريقة اثناء سيران البرنامج ام لا .

شكرا .

نعم اخي الكريم,, الأخ طرح الفمرة وهي شغّالة زبدزن مشاكل,,

عند عمل aktive نضع الكود في الحدث نفسه,,, وبهذه الحالة يتم جلب الساعة,,

لكن مرة واحدة,, والطريقة فعّالة لو عملنا نفس الكود ولكن في الحدث OnActivate نعمل enable = true للتايمر,, ونضع الكود فيه,,

________

اشكرك اخي الكريم على حلّك,, لم اجربه بعد,, ولكن سأجربه ان شاء الله قريبا,,

بارك الله فيك