19 Aralık 2010 Pazar

[ Delphi ] Delphi Programlama Vize Sınavında Sorulan 3. Sorunun Cevabı

Merhaba arkadaşlar. Delphi vize sınavında hocanın sorduğu 3. soru;



a) Form içinde bir sayaç tanımlanacak. Minumum değeri 0, Maksimum değeri 255 olacak.
b) Form açıldığında birinci timer devreye girecek ve sayacın değerini devamlı bir arttıracak ve bu değeri ListBox1 objesinin içine ekleyecek. Bu işlem sayaç maximum değerini alıncaya kadar devam edecek. Sayaç Maksimum değerini alınca Minumum değerine geri dönecek 1. Timer durup 2. timer devreye girecek.
c) 2. Timerda , 1. Timer gibi çalışacak fakat sayacın değerini ListBox2 'ye ekleyecek Maksimum değerini alıncaya kadar devam edecek. Maksimum değerini alınca minumum değerine geri dönecek 2. timer durup 1. timer devreye girecek.

Sorunun Çözümü ;
 Öncelikle bir sayac değişkeni tanımlamalıyız. Bu değişkeni farklı nesnelerde kullanacagımızdan ötürü global olarak tanımlıyoruz..

a) Sayaç tanımlama.
var
  Form1: TForm1;
  sayac:byte;         // Soruda söylendiği gibi bir sayac tanımlıyoruz
  //BYTE tipinde tanımladık cünkü 0 ile 255 arasında karakter tutabiliyor bu değişkenimiz.




b) Timer1 Nesnesinin OnTimer Olayına yazılan kodlar;
procedure TForm1.Timer1Timer(Sender: TObject);     // Timer1'in OnTimer Olayına yazılan kodlar.
begin
sayac:= sayac + 1;     // Burada Sayacı 1 artırıyoruz.
ListBox1.Items.Add(inttostr(sayac));   // Yukarıda artırtıgımız sayac değerini Listbox1 'in içine yazdırıyoruz.
// Tabi Mutlaka inttostr Komutu ile gerekli dönüşümü yapmak zorundayız.

if sayac = 255 then    // Sayaç Maksimum degeri yani 255 'i alınca Timer1 i durdurup, Timer2 'yi çalıştırıyoruz ve Sayac'ın degerini Sıfırlıyoruz yani minumum degerini atıyoruz.
begin
sayac := 0;  // Sayacı sıfırladık.
timer1.Enabled:=false; // Timer1 'i durdurduk.
timer2.Enabled:=true;  // Timer2 'yi Çalıştırdık.
end;
end;





c) Timer2 Nesnesinin OnTimer Olayına yazılan kodlar;
procedure TForm1.Timer2Timer(Sender: TObject);     // Timer2'nin OnTimer Olayına yazılan kodlar.
begin
sayac:= sayac + 1;     // Burada Sayacı 1 artırıyoruz.
ListBox2.Items.Add(inttostr(sayac));   // Yukarıda artırtıgımız sayac değerini Listbox2 'nin içine yazdırıyoruz.
// Tabi Mutlaka inttostr Komutu ile gerekli dönüşümü yapmak zorundayız.

if sayac = 255 then    // Sayaç Maksimum degeri yani 255 'i alınca Timer2 'yi durdurup, Timer1 'i çalıştırıyoruz ve Sayac'ın degerini Sıfırlıyoruz yani minumum degerini atıyoruz.
begin
sayac := 0;  // Sayacı sıfırladık.
timer2.Enabled:=false; // Timer2 'yi durdurduk.
timer1.Enabled:=true;  // Timer1 'i Çalıştırdık.
end;
end;



Hiç yorum yok:

Yorum Gönder