Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
while döngüsüne zaman verme
#1
Merhaba, 


while ile döngü sağlıyorum fakat bu döngüye timer gibi "interval" hız ayarı vermeyi nasıl sağlarım. Bu işlemi timer ve Sleep kullanmadan yapmak istiyorum.


procedure THreadNewTime.Execute;
begin
  inherited;
  while True do
  begin
    Sleep(25);
     MainForm.Button1.Position.X := MainForm.Button1.Position.X - 1.5;
    Application.ProcessMessages;
  end;
end;
Cevapla
#2
(02-05-2021, Saat: 10:22)Mete Adlı Kullanıcıdan Alıntı: Merhaba, 


while ile döngü sağlıyorum fakat bu döngüye timer gibi "interval" hız ayarı vermeyi nasıl sağlarım. Bu işlemi timer ve Sleep kullanmadan yapmak istiyorum.


procedure THreadNewTime.Execute;
begin
  inherited;
  while True do
  begin
    Sleep(25);
     MainForm.Button1.Position.X := MainForm.Button1.Position.X - 1.5;
    Application.ProcessMessages;
  end;
end;

uses
  System.Diagnostics;

procedure THreadNewTime.Execute;
var
 sw: TStopwatch;
begin
  inherited;
 sw.Create;
 while True do
 begin
   sw.Start;
   if sw.Elapsed.TotalMilliseconds > 25 then
   begin
     sw.Reset;
     MainForm.Button1.Position.X := MainForm.Button1.Position.X - 1.5;
     Application.ProcessMessages;   // Fakat burada zaman sizin kontrölünüzde değil,
                                                 // mesaj alma dönüsünün ne kadar süreceği ve
                                                // mesajların işlenme süresi sizin zamanlama planınızı bozabilir.

   end;
 end;

end;
Herhangi bir basit problem, hakkında yeterince toplantı yapılarak, çözümsüz hale getirilebilir.
https://play.google.com/store/apps/developer?id=ONGUN
WWW
Cevapla
#3
(02-05-2021, Saat: 12:18)savasabd Adlı Kullanıcıdan Alıntı:
(02-05-2021, Saat: 10:22)Mete Adlı Kullanıcıdan Alıntı: Merhaba, 


while ile döngü sağlıyorum fakat bu döngüye timer gibi "interval" hız ayarı vermeyi nasıl sağlarım. Bu işlemi timer ve Sleep kullanmadan yapmak istiyorum.


procedure THreadNewTime.Execute;
begin
  inherited;
  while True do
  begin
    Sleep(25);
     MainForm.Button1.Position.X := MainForm.Button1.Position.X - 1.5;
    Application.ProcessMessages;
  end;
end;

uses
  System.Diagnostics;

procedure THreadNewTime.Execute;
var
 sw: TStopwatch;
begin
  inherited;
 sw.Create;
 while True do
 begin
   sw.Start;
   if sw.Elapsed.TotalMilliseconds > 25 then
   begin
     sw.Reset;
     MainForm.Button1.Position.X := MainForm.Button1.Position.X - 1.5;
     Application.ProcessMessages;   // Fakat burada zaman sizin kontrölünüzde değil,
                                                 // mesaj alma dönüsünün ne kadar süreceği ve
                                                // mesajların işlenme süresi sizin zamanlama planınızı bozabilir.

   end;
 end;

end;

Teşekkür ederim üstat.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  TidHTTP zaman aşımı info@guzelceker.com 1 139 09-05-2021, Saat: 16:51
Son Yorum: savasabd
  "Sorgu Zaman Aşımı Doldu" Hatası OZCANK 7 975 08-11-2020, Saat: 10:17
Son Yorum: serdar
  Resim içerisindeki Herhangi Bir Renge Zemin Resmi Verme (2 renk verme (Pattern)) pro_imaj 10 4.451 15-04-2019, Saat: 18:04
Son Yorum: esistem
  iki zaman aralığı ahmetb 5 2.544 02-03-2019, Saat: 12:30
Son Yorum: ahmetb
  zaman farkı hesabı salih 7 4.293 09-02-2019, Saat: 12:45
Son Yorum: Bay_Y



Konuyu Okuyanlar: 1 Ziyaretçi