Deadlock hatasını Türkçe olarak nasıl verdirebiliriz?
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Deadlock hatasını Türkçe olarak nasıl verdirebiliriz?
Arkadaşlar;
Forumda firebirdü ağ üzerinde kullanırken kayıt kilitleme konusunu aradım ve söylenilenleri uygulayarak(Gökmen Bey'in önerileri) bunu yaptım.Ağdaki bir kullanıcı bir kaydı edit etme aşamasındaysa başka bir kullanıcı bu kaydı edit etmeye çalışır yada silmeye çalışırsa deadlock hatası veriyor ve buna izin vermiyor.Çok güzel bir olay.Kaydı edit etmeye başlayan ilk kişi de transactionu commit edince kilit kalkıyor.Ancak burada çıkan hata mesajı yani deadlock hata mesajı ingilizce.Sanırım (yanlış tahmin etmiyorsam) bu firebirdden gelen bir hata mesajı ve ingilizce.Acaba bu mesajı türkçeye çevirebilirmiyiz yada bu mesajın çıkmasını engelleyerek kendi hata mesajımızın çıkmasını nasıl sağlarız?Böyle bir mesajı hangi yordama yazmalıyız?Bu kdonuda yardım edebilirseniz sevinirim.Teşekkürler.
Forumda firebirdü ağ üzerinde kullanırken kayıt kilitleme konusunu aradım ve söylenilenleri uygulayarak(Gökmen Bey'in önerileri) bunu yaptım.Ağdaki bir kullanıcı bir kaydı edit etme aşamasındaysa başka bir kullanıcı bu kaydı edit etmeye çalışır yada silmeye çalışırsa deadlock hatası veriyor ve buna izin vermiyor.Çok güzel bir olay.Kaydı edit etmeye başlayan ilk kişi de transactionu commit edince kilit kalkıyor.Ancak burada çıkan hata mesajı yani deadlock hata mesajı ingilizce.Sanırım (yanlış tahmin etmiyorsam) bu firebirdden gelen bir hata mesajı ve ingilizce.Acaba bu mesajı türkçeye çevirebilirmiyiz yada bu mesajın çıkmasını engelleyerek kendi hata mesajımızın çıkmasını nasıl sağlarız?Böyle bir mesajı hangi yordama yazmalıyız?Bu kdonuda yardım edebilirseniz sevinirim.Teşekkürler.
Kod: Tümünü seç
try
//bu araya muhtemel hata cıkaracak kodlar gelir.
except
on e: exception do
if Pos('deadlock',e.Message)<>0 then
ShowMessage('Kayıt kilitli, biraz sonra deneyin);
end;
ApplicationEvents ile ise
Form uzerine bir ApplicationEvents nesnesi koyup
Kod: Tümünü seç
if Pos('deadlock',e.Message)<>0 then
ShowMessage('Kayıt kilitli, biraz sonra deneyin);
belki biraz duzenleme ile daha iyi olur
ÜŞENME,ERTELEME,VAZGEÇME
Gökmen hocam Undeclared identifier: 'on' hatası veriyor.
Koddaki satırında hata veriyor.Application nesnesinide aldım forma ama.Helpten hangi uniti usese ekleyeceğime baktım ama bulamadım.Hangi unitte deklare edilmiştir acaba?Teşekkürler.
Koddaki
Kod: Tümünü seç
on e: exception do
Gökmen hocam kod aşağıda bir bakabilirseniz.
Kod: Tümünü seç
procedure TForm1.Button1Click(Sender: TObject);
begin
try
IBDataSet1.Post;
except
begin //except başla
on E: Exception do//Hatayı burada veriyor. Undeclared identifier on diye
if Pos('deadlock',e.Message)<>0 then
begin
ShowMessage('Kayıt kilitli, biraz sonra deneyin');
end; //if sonu
end;//except sonu
end;//try sonu
end; //procedure sonu
except den sonra begin end e gerek yokNewMember yazdı:Gökmen hocam kod aşağıda bir bakabilirseniz.
Kod: Tümünü seç
procedure TForm1.Button1Click(Sender: TObject); begin try IBDataSet1.Post; except begin //BURASI OLMAYACAK on E: Exception do//Hatayı burada veriyor. Undeclared identifier on diye if Pos('deadlock',e.Message)<>0 then begin ShowMessage('Kayıt kilitli, biraz sonra deneyin'); end; //if sonu end;//except sonu-BURASIDA OLAMAYACAK end;//try sonu end; //procedure sonu
try
except
on e:exception do doanything;
end;
seklinde olmalı
ÜŞENME,ERTELEME,VAZGEÇME
Gökmen Hocam kusura bakmayın.Biraz uazattım ama ben ilk mesajınızdan hem try except bloğunu kullanmam gerektiğini hemde sadece application componentinin on exception yordamına yazmam gerektiğini anlamını çıkarmıştım.ben her iki tarafada yazdım.Ancak şimfi sizlerin mesajına göre sadece application eventine yazdım ancak hata vermiyor.Yani hatayı kesti ama ShowMessage de vermiyor.Yani tepki vermiyor..Acaba nerede hata yapıyorum.
Birde Burada 'deadlock' ifadesi yerine orijinal mesajda çıkan hata mesajınımı yazıyoruz yoksa reserved bir kelimemi.Çünkü orijinal hata mesajında sadece deadlock yazmıyor ben ilk mesajımda kısaca böyle yazdım.
tekrar kusura bakmayın.
Birde
Kod: Tümünü seç
if Pos('deadlock',e.Message)<>0 then
tekrar kusura bakmayın.