Timer Kapatabilme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
naturelmania
Üye
Mesajlar: 66
Kayıt: 27 Nis 2006 09:29

Timer Kapatabilme

Mesaj gönderen naturelmania »

projemde timer kullanırken timerı başlatabiliyorum ama bi türlü durduramıyorum. Kodum aşağıdaki gibi
Timer1.enabled komutuna false değerini aktarmam 1 işe yaramıyor. Bu arada proje de tek butona tıklama yapılarak baştılsın ve durdurulsun istiyorum.

Şimdiden yardımlarınız için teşekkürler.

Kod: Tümünü seç

procedure TForm1.GBaslaClick(Sender: TObject);

begin
    if Comport.Connected = False then
      begin
      showmessage('Fotometre Bağlantısı Açık Değil');
      end;
    if Comport.Connected = True then
    begin
      if Timer1.Enabled = True then
        begin
          Timer1.Enable = False;
          Gbasla.Caption := 'Gözleme Başla';
        end;
      if Timer1.Enabled = False then
        begin
          Timer1.Enabled := True;
          Gbasla.Caption := 'Gözlemi Bitir';
        end;
    end;

end;
poshet303
Üye
Mesajlar: 235
Kayıt: 26 Eki 2005 01:15

Mesaj gönderen poshet303 »

Normal şartlarda;

Kod: Tümünü seç

Timer1.enabled;
çalışır.

Kod: Tümünü seç

if Comport.Connected = True then 
eğer bu şart sağlanmıyor ise Timer.Enabled kısmına erişilemiyor olabilir.

kodu trace ederek sorunun kaynağını öğrenebilirsiniz.
Kullanıcı avatarı
Hancet
Üye
Mesajlar: 107
Kayıt: 08 May 2005 01:18
Konum: Burdan...
İletişim:

Mesaj gönderen Hancet »

Kod: Tümünü seç

procedure TForm1.GBaslaClick(Sender: TObject); 

begin 
    if Comport.Connected = False then 
      begin 
      showmessage('Fotometre Bağlantısı Açık Değil'); 
      end; 
    if Comport.Connected = True then 
    begin 
      if Timer1.Enabled = True then //timer açıksa 
        begin 
          Timer1.Enable = False;  // timer'ı durdur
          Gbasla.Caption := 'Gözleme Başla'; 
        end; 
      if Timer1.Enabled = False then  // timer duruyorsa
        begin 
          Timer1.Enabled := True; // timer'ı aç
          Gbasla.Caption := 'Gözlemi Bitir'; 
        end; 
    end; 

end;
yukarıda ki kodlarına açıklama ekledim sadece. bu kodlar ile timer durmaz zaten. çünkü timer'ı kontrol ederek açıp kapıyorsun ve sürekli şart sağlanıyor.

Kod: Tümünü seç

procedure TForm1.GBaslaClick(Sender: TObject); 

begin 
    if Comport.Connected = False then 
      begin 
      showmessage('Fotometre Bağlantısı Açık Değil'); 
      end; 
    if Comport.Connected = True then 
    begin 
      if Timer1.Enabled = True then //timer açıksa 
        begin 
          Timer1.Enable = False;  // timer'ı durdur
          Gbasla.Caption := 'Gözleme Başla';
          abort; //procedure'den çık
        end; 
      if Timer1.Enabled = False then  // timer duruyorsa
        begin 
          Timer1.Enabled := True; // timer'ı aç
          Gbasla.Caption := 'Gözlemi Bitir'; 
          abort;//procedure'den çık  
        end; 
    end; 

end;
böyle kullanırsan sorun çözülür sanırım....
Kolay Gelsin
Varmı Beni İçinizde Tanıyan?
Yaşanmadan Çözülmeyen Sır Benim
Kalmasada Şöhretimi Duymayan,
Kimliğimi Tarif etmek zor Benim.
Kimsesizim hısmım da çok, hasmım da,
Görünmezim cismim de yok, resmim de,
Dil üzmezim, tek hece var ismimde,
Barınağım Delphi denen yer Benim..!
naturelmania
Üye
Mesajlar: 66
Kayıt: 27 Nis 2006 09:29

Mesaj gönderen naturelmania »

Hancet çok teşekkür ederim gerçekten de oldu.
Abort komutunu kullanmayı aklımın ucundan bile geçirmemiştim. Çok teşekkür ederim :lol:
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Procedure den çıkmak için Abort yerine Exit i tercih etmelisiniz :idea:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
Trial_Cooder
Üye
Mesajlar: 236
Kayıt: 17 Nis 2006 04:44

Mesaj gönderen Trial_Cooder »

Timer Şahlanıp Gidiyor :lol:
Kullanıcı avatarı
Hancet
Üye
Mesajlar: 107
Kayıt: 08 May 2005 01:18
Konum: Burdan...
İletişim:

Mesaj gönderen Hancet »

naturelmania yazdı:Hancet çok teşekkür ederim gerçekten de oldu.
Abort komutunu kullanmayı aklımın ucundan bile geçirmemiştim. Çok teşekkür ederim
önemli değil :wink:


rsimsek yazdı:Procedure den çıkmak için Abort yerine Exit i tercih etmelisiniz :idea:
Hocam farkları nedir biraz açıklar mısınız lütfen :?:
Varmı Beni İçinizde Tanıyan?
Yaşanmadan Çözülmeyen Sır Benim
Kalmasada Şöhretimi Duymayan,
Kimliğimi Tarif etmek zor Benim.
Kimsesizim hısmım da çok, hasmım da,
Görünmezim cismim de yok, resmim de,
Dil üzmezim, tek hece var ismimde,
Barınağım Delphi denen yer Benim..!
poshet303
Üye
Mesajlar: 235
Kayıt: 26 Eki 2005 01:15

Mesaj gönderen poshet303 »

rsimsek demiş ki:
Procedure den çıkmak için Abort yerine Exit i tercih etmelisiniz
Hocam farkları nedir biraz açıklar mısınız lütfen
Cevaplanmamış, önemli olduğunu düşündüğüm için cevaplayayım.

exit: procedure yada function dan çıkış sağlar. İlgili fonksiyon yada prosedürü çağırmış olan satırın bir altından devam edilir.

abort: sessiz bir istisna üretilir. Programın işleyişi bu noktada durur ve ilk istisna yöneticisine kadar gelinir. İstisna yöneticisi programcı tarafından yazılmamışsa Delphi nin istisna yöneticisine gelinir, bu tüm prosedür ve fonksiyonlardan çıkış anlamına geliyor.

Olayın sümülasyonu;

Kod: Tümünü seç


procedure TForm1.A;
begin
 Memo1.Lines.Add('A');
 abort;//exit;**********
end;

procedure TForm1.B;
begin
 Memo1.Lines.Add('B');
 A;
 Memo1.Lines.Add('B2 dananın kuyruğu');
end;

procedure TForm1.C;
begin
 try
  B;
 except
  showmessage('Hayrola');
 end;
  Memo1.Lines.Add('C');
end;
********** lı satırda önce exit; yazıp B; yi çağırın. sonra abort; yazıp B; yi çağırın. Sonuç aynı mı.

Peki şimdi ********** lı satırda Abort; yazıp C; yi çağırın. Sonuç.

Efendim programcılık ciddi iştir. Sağdan soldan öğrenilebilecek bir şey değildir. İşin temelini iyi kitaplardan ve ilgili yazılımların yardım dosyalarından okuyarak öğrenmek lazım. Yoksa cidi sıkıntılar olabilir.

Aman dikkat.
Cevapla