Deadlock hatasını Türkçe olarak nasıl verdirebiliriz?

NewMember 14.09.2005 - 11:45:38
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.
 
gkimirti 14.09.2005 - 11:49:22
ApplicationEvents kullanabilirsin.
yada hata verilmesi muhtemel yerleri try except arasında tahlil edebilirsin.
en basiti TApplicationEvents kullanmak
 
NewMember 14.09.2005 - 12:53:10
Gökmen Hocam.Kusura Bakmayın.Bu konuda fazla iyi değilim.Bir örnek verebilirmisiniz.Application.evnts ile nasıl hata mesajı verdirebilirim?.Ayrıca try except ile yapınca tamam türkçe mesaj çıkabilir ama orijinal mesajda çıkar.Bunu nasıl yapabilirim.Lütfen bir örnek.Teşekkürler.
 
gkimirti 14.09.2005 - 13:22:12

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
if Pos('deadlock',e.Message)<>0 then
ShowMessage('Kayıt kilitli, biraz sonra deneyin);

kodunu OnException olayına yazıyorsun
belki biraz duzenleme ile daha iyi olur
 
NewMember 14.09.2005 - 13:32:22
Gökmen Hocam çok sağolun.Derleyici yanımda değil.Deneyip sonucu bildiririm.Çok teşekkürler.
 
NewMember 14.09.2005 - 14:13:53
Gökmen hocam Undeclared identifier: 'on' hatası veriyor.
Koddaki
on e: exception do
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.
 
gkimirti 14.09.2005 - 15:11:37
Forma koydugun nesnelerin uniti otomatik dahil edilir
digerinde yazdıgın kodun tamamını yapıstırırsan daha anlasılır olur.
 
NewMember 14.09.2005 - 15:39:01
Gökmen hocam kod aşağıda bir bakabilirseniz.

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
 
musti 14.09.2005 - 15:48:14
hocam onu

ApplicationEvents1 componentinin

onException


icine koyacan

try exce.. e degil
 
gkimirti 14.09.2005 - 15:54:17
Gökmen hocam kod aşağıda bir bakabilirseniz.

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


except den sonra begin end e gerek yok

try

except

on e:exception do doanything;

end;

seklinde olmalı
 
musti 14.09.2005 - 15:59:11
hocam bunu
ApplicationEvents ile yapmak daha mantıklı degil mi
yoksa her fonksiyonun icine try ile gommek biraz uzun iş gibi.
 
gkimirti 14.09.2005 - 16:05:51
yukarda demistim applicationevents ile daha basit diye
artık secim programcının :)
 
NewMember 14.09.2005 - 18:09:34
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
if Pos('deadlock',e.Message)<>0 then
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.
 
ofenX 14.09.2005 - 18:24:34
Merhaba,
try exceptin sonucunu görmeniz için ya programın exe sini çalıştıracaksınız. Ya da Tools/Debugger Options dan Language Exception sekmesine gidip
Oradan alttaki Stop on delphi exception ın onay ını kaldırmalısınız.

Bu şekilde bir deneyin.

İyi çalışmalar.
 
NewMember 14.09.2005 - 19:05:15
Hocam exeden çalıştırıyorum.Ancak program kırılmıyor ama hata da vermiyor.Bense bu kodları yazmazsam ingilizce çıkan mesajı bu kodları yazarak kendi mesajımı çıkartmak işstiyorum.Ama bu kodlarla ne hata mesajı çıkıyo nede program kırılıyor.İlginize teşekkürler.
 
ofenX 14.09.2005 - 19:47:13
Merhaba,
Mesaj vermemesi başka bir hata olduğundandır. Siz sadece deadlock olursa mesaj ver demişsiniz. Ya diğer hatalar ?
Yukarıdaki kodu aşağıdaki gibi değiştirirseniz. Deadlock dışındakini de verecektir.



procedure TForm1.Button1Click(Sender: TObject);
begin
try
IBDataSet1.Post;
except

on E: Exception do
begin
showmessage(e.classname+' '+e.message);

if Pos('deadlock',e.Message)<>0 then
begin
ShowMessage('Kayıt kilitli, biraz sonra deneyin');
end; //if sonu

end;

end;//try sonu


end; //procedure sonu
 


Deadlock u gösterebilmek için bir kayıtı meşgul etmeniz lazım. Yani biri edit te iken diğer taraftan edit yap deyince bunu vermesi lazım.


İyi çalışmalar.
 
NewMember 15.09.2005 - 08:48:27
Arkadaşlar teşekkür ederim.Dediğim gibi sizleri yanlış anlamışım ben kodu her iki duruma da yazıyordum.Try excepte yazdım ve şimdi o blokta başka hata olursa mesaj vermiyor sadece deadlock hatasında yazdığım mesaj çıkıyor.Çok sağolun.Kolay gelsin

Okul Zil Programı

yilsoftzil

9786059223690
logo5

Esma-ül Hüsna

Ziyaretçi İstatistikleri

Bugün132
Dün256
Bu hafta132
Bu ay5843
Hepsi771244