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

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Kullanıcı avatarı
NewMember
Üye
Mesajlar: 990
Kayıt: 29 Haz 2005 06:57
Konum: Bursa

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

Mesaj gönderen NewMember »

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.
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

ApplicationEvents kullanabilirsin.
yada hata verilmesi muhtemel yerleri try except arasında tahlil edebilirsin.
en basiti TApplicationEvents kullanmak
ÜŞENME,ERTELEME,VAZGEÇME
Kullanıcı avatarı
NewMember
Üye
Mesajlar: 990
Kayıt: 29 Haz 2005 06:57
Konum: Bursa

Mesaj gönderen NewMember »

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.
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

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);
kodunu OnException olayına yazıyorsun
belki biraz duzenleme ile daha iyi olur
ÜŞENME,ERTELEME,VAZGEÇME
Kullanıcı avatarı
NewMember
Üye
Mesajlar: 990
Kayıt: 29 Haz 2005 06:57
Konum: Bursa

Mesaj gönderen NewMember »

Gökmen Hocam çok sağolun.Derleyici yanımda değil.Deneyip sonucu bildiririm.Çok teşekkürler.
Kullanıcı avatarı
NewMember
Üye
Mesajlar: 990
Kayıt: 29 Haz 2005 06:57
Konum: Bursa

Mesaj gönderen NewMember »

Gökmen hocam Undeclared identifier: 'on' hatası veriyor.
Koddaki

Kod: Tümünü seç

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.
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

Forma koydugun nesnelerin uniti otomatik dahil edilir
digerinde yazdıgın kodun tamamını yapıstırırsan daha anlasılır olur.
ÜŞENME,ERTELEME,VAZGEÇME
Kullanıcı avatarı
NewMember
Üye
Mesajlar: 990
Kayıt: 29 Haz 2005 06:57
Konum: Bursa

Mesaj gönderen NewMember »

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
Kullanıcı avatarı
musti
Üye
Mesajlar: 527
Kayıt: 11 Tem 2005 09:44

Mesaj gönderen musti »

hocam onu

ApplicationEvents1 componentinin

onException


icine koyacan

try exce.. e degil
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

NewMember 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
except den sonra begin end e gerek yok

try

except

on e:exception do doanything;

end;

seklinde olmalı
ÜŞENME,ERTELEME,VAZGEÇME
Kullanıcı avatarı
musti
Üye
Mesajlar: 527
Kayıt: 11 Tem 2005 09:44

Mesaj gönderen musti »

hocam bunu
ApplicationEvents ile yapmak daha mantıklı degil mi
yoksa her fonksiyonun icine try ile gommek biraz uzun iş gibi.
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

yukarda demistim applicationevents ile daha basit diye
artık secim programcının :)
ÜŞENME,ERTELEME,VAZGEÇME
Kullanıcı avatarı
NewMember
Üye
Mesajlar: 990
Kayıt: 29 Haz 2005 06:57
Konum: Bursa

Mesaj gönderen NewMember »

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

Kod: Tümünü seç

 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.
Kullanıcı avatarı
ofenX
Üye
Mesajlar: 397
Kayıt: 09 Nis 2005 10:24
Konum: Diyarbakır
İletişim:

Mesaj gönderen ofenX »

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.
Kullanıcı avatarı
NewMember
Üye
Mesajlar: 990
Kayıt: 29 Haz 2005 06:57
Konum: Bursa

Mesaj gönderen NewMember »

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.
Cevapla