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);