IBEvent Sorun Yaşıyorum

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
Metinx
Üye
Mesajlar: 54
Kayıt: 04 Eki 2007 01:39

IBEvent Sorun Yaşıyorum

Mesaj gönderen Metinx »

Merhaba Değerli DelphiTürkiye Üyeleri ve Emektarları.
Sizlerle bir sorunumu paylaşmak istiyorum. Firebird 2.1 kullandığım bir projede aşağıdakiki şekilde oluşturduğum 60 adet triger im var.

Kod: Tümünü seç

CREATE TRIGGER SATIS_EVENT FOR SATIS
ACTIVE AFTER INSERT OR UPDATE OR DELETE POSITION 0
AS
begin
  post_event 'SATISCH';
end
Delphi Tarafında ise IBEvent bileşenine events olarak object İnspector dan açtığım kutuya yazıp daha sonra AutoResiter ' i True yapıyorum. fakat bazen yakalıyor bazen yakalayamıyor. bazen hiç yakalayamıyor. Biraz araştırdım şöyle bişeyle karşılaştım.

Delphi Unitleri içinde IBEvent unitini inceledim.

Kod: Tümünü seç

unit IBEvents;
.......
.......
const
  IB_MAX_EVENT_BLOCK   = 15;   // maximum events handled per block by InterBase
  IB_MAX_EVENT_LENGTH  = 64;  // maximum event name length
{$IFDEF LINUX}
  INFINITE = $FFFFFFFF;
{$ENDIF}

Kod: Tümünü seç

....
....

procedure TIBEvents.RegisterEvents;
var
  i: Integer;
begin
  if csDesigning in ComponentState then
    exit;
  if not Assigned(FDatabase) then
    IBError(ibxeDatabaseNameMissing, []);
  if (FThreads.Count = 0) then
  begin
    if (FEvents.Count > 0) then
    begin
      for i := 0 to ((FEvents.Count - 1) div IB_MAX_EVENT_BLOCK) do
        FThreads.Add(TIBEventThread.Create(Self, i, ThreadEnded));
    end;
  end
  else
    IBError(ibxeEventAlreadyRegistered, []);
end;

Kod: Tümünü seç

procedure TIBEventThread.RegisterEvents;

  function EBP(Index: Integer): PChar;
  begin
    Inc(Index, (EventGroup * IB_MAX_EVENT_BLOCK));
    if (Index > Parent.FEvents.Count) then
      Result := nil
    else
      Result := PChar(Parent.FEvents[Index - 1]);
  end;

begin
  EventBuffer := nil;
  ResultBuffer := nil;
  EventBufferLen := 0;
  FirstTime := True;
  EventCount := (Parent.FEvents.Count - (EventGroup * IB_MAX_EVENT_BLOCK));
  if (EventCount > IB_MAX_EVENT_BLOCK) then
    EventCount := IB_MAX_EVENT_BLOCK;
  EventBufferLen := Tsib_event_block(isc_event_block)(@EventBuffer,
    @ResultBuffer, EventCount, EBP(1), EBP(2), EBP(3), EBP(4), EBP(5), EBP(6),
    EBP(7), EBP(8), EBP(9), EBP(10), EBP(11), EBP(12), EBP(13), EBP(14), EBP(15));
end;
buna ek olarak ;
http://www.ibphoenix.com/main.nfs?a=ibp ... ge=ibp_ibx adresindeki

Kod: Tümünü seç

IBEvents
InterBase allows triggers and stored procedures to raise events. The IBEvents component lets your application register interest in up to 15 events. When an event occurs the IBEvents component’s OnEventAlert event fires allowing your application to respond to the event.
Online Çevirme Yapınca

Kod: Tümünü seç

InterBase depolanır ve prosedürleri etkinlikleri artırmak için tetikler sağlar. IBEvents bileşeni kadar 15 etkinlik başvuru kayıt ilgi sağlar. Bir olay IBEvents bileşenin OnEventAlert olay gerçekleştiğinde uygulama olay yanıt izin ateşler.
Sormak istediğim şey IBEvent bileşenine sadece 15 adet mi tanımlayabiliyoruz. Çünkü ben bu sorunları genelde çok sayıda event oluşturduğum zaman alıyorum.
Yada bu sorunların yaşanmaması için ne yapabiliriz.
Kullanıcı avatarı
Metinx
Üye
Mesajlar: 54
Kayıt: 04 Eki 2007 01:39

Re: IBEvent Sorun Yaşıyorum

Mesaj gönderen Metinx »

Çok mu zor bir soru sordum. En azından fikri olan birisi varsa yazabilir.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: IBEvent Sorun Yaşıyorum

Mesaj gönderen aslangeri »

s.a.
ibevent ile bi ara epey uğraşmıştım.
15 den fazla event register edebilirisin.
eventlar tetiklenir tetiklenmez gönderilmiyor. transaction u commit ettiğin zaman gönderiliyorlar ona dikkat et.
birde ağ üzerinde eventlar için remote aux port var onun set edildiğinden emin ol. yoksa rastgele bir port seçiyor (du şuan kini bilmiyorum) seçtiği portta gücenlik duvarına yakalanırsa bekle dur.....
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
Metinx
Üye
Mesajlar: 54
Kayıt: 04 Eki 2007 01:39

Re: IBEvent Sorun Yaşıyorum

Mesaj gönderen Metinx »

Teşekkür ederim. Tam Ümidi kesmişken cevap yazdınız. Commit kısmında sorun yok 15 den fazla event register edebiliyorsak sorun yok o zaman . ama ara sıra bu sorunu yaşıyorum. bir oluyor bir olmuyor. remote aux port u nasıl nerden set edebilirim?
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: IBEvent Sorun Yaşıyorum

Mesaj gönderen aslangeri »

firebirdin yüklü olduğu yerde ini dosyası var ordan değiştirebilirsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
Metinx
Üye
Mesajlar: 54
Kayıt: 04 Eki 2007 01:39

Re: IBEvent Sorun Yaşıyorum

Mesaj gönderen Metinx »

Tşk Ederim.
Cevapla