Application.OnException bölümündeki bilgiyi yakalama
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
- muratmutlu
- Üye
- Mesajlar: 57
- Kayıt: 02 Tem 2005 02:44
- Konum: Antalya
Application.OnException bölümündeki bilgiyi yakalama
Merhaba, benim şöyle bir sorunum var. Bir çok projeden ve formdan oluşan bir programım var. Bu programda oluşacak hataları kaydeden bir sistemim var. Sistemde (Application) bir hata oluştuğu zaman otomatik olarak bir hata formu üretiliyor. Bu formda hatanın içeriği de dahil olmak üzere bir çok şey alınıyor. Bu noktada; ben bir hata aldığım zaman, hatayı alan nesenenin TQuery ise içindeki SQL cümlesini de almasını istiyorum. Bunun için Application.OnException bölümünde Sender ile kontrol yapmak istedim. Sender ile gelen objenin sınıfı TQuery olması gerekirken TPanel olarak dönüyor. Panel dönmesinin sebebi ise hataya sebep olan edit (Edit içinde özel bir karakter kullanılıyor) in panelde olması. Application.OnException bölümünde alabildiğim sadece 2 parametere var birisi Sender: TObject; diğeri ise E: Exception, fakat ikisinden de tatmin edici bir sonuç alamadım. Kısacası hatanın oluştuğu nesne TQuery ise içindeki SQL cümlesini de almak istiyorum bunu nasıl yaparım ?
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Re: Application.OnException bölümündeki bilgiyi yakalama
Çıkan hatanın nesne ile alakası olmayabilir. Bahsettiğiniz sender parametresi ilginçtir o anki aktif kontrolün içinde bulunduğu bileşeni vermekte. Zaten hata çıkaran nesneler değil kodlardır. Mesela negatif sayının karekökünü hesaplamak bir istisnadır. Hatalı SQL sorgusu işletilmeye çalışması gibi. Bunun yerine E parametresinin istisna sınıfı (E.ClassName) veya içerdiği mesaja (E.Message) göre yönlendirme yapılabilir.kodu ile çıkan hataların kaynağı hakkında yorum yapabilirsin.
Kod: Tümünü seç
procedure TForm1.ApplicationEvents1Exception(Sender: TObject;
E: Exception);
begin
Label1.Caption:=TComponent(Sender).Name;
Label2.Caption:=E.ClassName;
Label3.Caption:=E.Message;
end;
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .