Hata mesajını bir defa gösterme...

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
KoPilot
Üye
Mesajlar: 185
Kayıt: 05 Eki 2007 08:02

Hata mesajını bir defa gösterme...

Mesaj gönderen KoPilot »

Kod: Tümünü seç

function kural(h:string; j:integer):string;
begin
try
//Kurları al
except
showmessage('kuralmada hata');
end;
case j of
1:result:=DAlis;
2:result:=DSatis;
3:result:=EAlis;
4:result:=ESatis;
end; end;
bu fonksiyonla kur sorgulaması yapıyorum ve

Kod: Tümünü seç

DAlisEdit.text:=kural('hebe',1);
DSatisEdit.text:=kural('hebe',2);
EAlisEdit.text:=kural('hebe',3);
ESatisEdit.text:=kural('hebe',4);
diye kullanıyorum. Sorum şu fonksiyon hata ile karşılaştığında
except bloğundaki messajı doğal olarak 4 defa gösteriyor.

Bu mesajı bir defa göstermek mümkündür de nasıl?
Dosyalarınızı kendi bulutunuza yedekleyin. Yandex Disk
Eyvallah..
mkysoft
Kıdemli Üye
Mesajlar: 3110
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Re: Hata mesajını bir defa gösterme...

Mesaj gönderen mkysoft »

try except bloğunu fonksion içinde değilde, fonksiyonu çağırırken kullanmalısınız. hata oluştuktan sonra, fonksiyon tekrar çalıştığında tekrar oluşacaktır.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Hata mesajını bir defa gösterme...

Mesaj gönderen mrmarman »

Merhaba.

Hatayı sadece 1 defa göstersin bir daha da göstermesin ve hatayı pas geçsin mi istiyoruz ? İşlem basit. Genel uygulamada GLOBAL bir değişken kullanıp bu değişkene EXCEPT bloğunda bir değer atamak, TRY bloğunda ise bu değişkene bu değer atanmış mıyı basit bir IF sorgusu ile kontrol ederek kararı belirlemek.

Ek olarak daha önce bir kaç başlıkta daha const (sabit) tanımını sadece aynı fonksiyon içerisinde değişken olarak kullanabilmek, böylece hatırlanmasını sağlamak amaçlı ifade ettiğim {$j+} {$j-} direktifini yeniden önereyim. Kullanımı şöyle...

Umarım işini görür, mantık hatası yapmamışsam aşağıdaki şekilde çalışması lazım. Hatam varsa affola :) Denemedim çünkü.

Kod: Tümünü seç

function kural(h:string; j:integer; HataReset:Boolean):string;
{$j+}
  Const Kontrol : Boolean = True; // kural fonksiyonu içinde hatırlanan değişken oldu...
                                  // Yani sen ikinci bir değer atayana kadar değer
                                  // daha önce ne ise o hatırlanacaktır.
{$j-}
begin
  // Yeniden hatayı göreyim istersen HataReset parametresine True ataman yeterli.
  If HataReset then Kontrol := True;

  try
    //Kurları al
  except
    If Kontrol then begin
      showmessage('kuralmada hata');
      Kontrol := False;
    end;
  end;

  case j of
    1:  result := DAlis;
    2:  result := DSatis;
    3:  result := EAlis;
    4:  result := ESatis;
  end;
end;
Kullanımında ise şöyle yapıcan..

Kod: Tümünü seç

  DAlisEdit.text  := kural('hebe',1, True); // ilk true hata kilidini açar...
  DSatisEdit.text := kural('hebe',2, False);
  EAlisEdit.text  := kural('hebe',3, False);
  ESatisEdit.text := kural('hebe',4, False);
Resim
Resim ....Resim
Kullanıcı avatarı
KoPilot
Üye
Mesajlar: 185
Kayıt: 05 Eki 2007 08:02

Re: Hata mesajını bir defa gösterme...

Mesaj gönderen KoPilot »

Mükemmel bir çözüm...
Eyvallah...
Dosyalarınızı kendi bulutunuza yedekleyin. Yandex Disk
Eyvallah..
Cevapla