Timer için her seferinde farkı süre oluşturma
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Timer için her seferinde farkı süre oluşturma
Selamlar.
Timer için her seferinde farkı süre oluşturmak istiyorum, bu sayılar timer Interval özelliğine uygun olarak yani 1000 , 5000, 10000 gibi benim belirlediğim sayılar içinden her seferinde bir sayı üretmesini nasıl sağlaya bilirim?
procedure TForm1.Sayi(Sender: TObject);
var
Uret: Real;
begin
Uret := RandomRange(29, 180);
Caption := floattostr(Uret * 1000);
end;
Timer için her seferinde farkı süre oluşturmak istiyorum, bu sayılar timer Interval özelliğine uygun olarak yani 1000 , 5000, 10000 gibi benim belirlediğim sayılar içinden her seferinde bir sayı üretmesini nasıl sağlaya bilirim?
procedure TForm1.Sayi(Sender: TObject);
var
Uret: Real;
begin
Uret := RandomRange(29, 180);
Caption := floattostr(Uret * 1000);
end;
Re: Timer için her seferinde farkı süre oluşturma
Kod: Tümünü seç
const
Sureler = array[0..4] of integer = (
1000,
5000,
10000,
30000,
50000
);
var
sure: Integer;
begin
sure := Sureler[RandomRange(0,5)];
There's no place like 127.0.0.1
Re: Timer için her seferinde farkı süre oluşturma
Selamlar,
Timer evente girdiğinizde, Enabled'ını false yapın, yeni değerin Interval'e yerleştirin ve Procedure'den çıkmadan önce Tiöer'ınızı Enable edin.
Timer evente girdiğinizde, Enabled'ını false yapın, yeni değerin Interval'e yerleştirin ve Procedure'den çıkmadan önce Tiöer'ınızı Enable edin.
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
-
- Üye
- Mesajlar: 216
- Kayıt: 10 Ara 2013 03:50
Re: Timer için her seferinde farkı süre oluşturma
Merhaba,
SimaWB'nin verdiği örnek sabit belirli sayılar için doğrudur. Farklı olarak bir örnek olması açısından dinamik sayılar için bir örnek vermek istedim.
Timer'ı yeniden başlatmak için Enable Disable etmeye gerek yoktur. Interval değiştiğinde sayaç yeniden başlar. Sadece Timer Event'de yapılan iş uzun sürüyorsa o zaman durdurup başlatmak gerekir.
SimaWB'nin verdiği örnek sabit belirli sayılar için doğrudur. Farklı olarak bir örnek olması açısından dinamik sayılar için bir örnek vermek istedim.
Kod: Tümünü seç
procedure TForm1.FormCreate(Sender: TObject);
begin
Randomize;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
const MaxRange = 3; // max 3sn
begin
Timer1.Interval := RandomRange(1, MaxRange + 1) * 1000;
...
end;
Re: Timer için her seferinde farkı süre oluşturma
Aynen. Ben timer içinde ne kadar süre alacak bir işlem yapıldığını bilmediğimden kapatmasını tavsiye ettim.
Kolay Gelsin

Kolay Gelsin
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Re: Timer için her seferinde farkı süre oluşturma
Teşekkür ederim emeği geçen herkese...
;
Kod: Tümünü seç
const
Sureler: Array [0 .. 6] of Integer = (30000, 40000, 50000, 60000, 70000,
80000, 90000);
var
Sure: Integer;
begin
Sure := Sureler[RandomRange(0, 5)];
Timer1.Interval := Sure;
end
Re: Timer için her seferinde farkı süre oluşturma
RandomRange(0, 5) komutunun üreteceği değerler: 0,1,2,3,4 'tür. Ama sizin kodda Sureler dizisinin boyutu 6'ya kadar gidiyor. Buna dikkat!
There's no place like 127.0.0.1
Re: Timer için her seferinde farkı süre oluşturma
Kod: Tümünü seç
procedure TForm1.FormCreate(Sender: TObject);
begin
Randomize;
Timer1.Interval := 0;
Timer1.Enabled := False;
while Timer1.Interval < 10000 do
Timer1.Interval := Random(100000);
Timer1.Enabled := True;
end;