Firebird Bağlantı kopması

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Kullanıcı avatarı
serbek_tr
Üye
Mesajlar: 362
Kayıt: 16 Ağu 2004 12:54

Firebird Bağlantı kopması

Mesaj gönderen serbek_tr »

S.A arkadaşlar.

Uygulamada çalışırken veritabanının bulunduğu makina ile arada kopma olduğu zaman uygulama bir türlü sonlanmıyor.
Hatayı yakalayıp oluştuğu an uygulamayı sonladırma yoluna gittim yani kopma olayı gerçekleştiğinde application.terminate diyorum bu defa uygulama ekrandan kayboluyor ve görev yöneticisinde hala uygulama çalışır göründüğü için hataları vermeye devam ediyor. uygulamayı hatayı yakaladıktan sonra bir dünya hata vermeden söz dinler şekilde nasıl sonlandırabilirim. çünkü uygulama sonlanırken bile açık bağlantılar kapatılmaya çalışıldığı için hatalar devam ediyor.
Procedure Forum.Imza(Sender: TObject)
Begin
ShowMessage('Her türlü fikire, Her zaman açığım')
End;
anemos
Üye
Mesajlar: 110
Kayıt: 02 Nis 2007 07:51
Konum: Sakarya / Hendek

Re: Firebird Bağlantı kopması

Mesaj gönderen anemos »

Görev yöneticisinden de kapanması sorunu çözebiliyorsa windowsun "taskkill" uygulamasını program içinden çalıştırarak
uygulamanızı kapatabilirsiniz.
akdatilla
Üye
Mesajlar: 292
Kayıt: 02 Nis 2006 06:04
Konum: Antalya

Re: Firebird Bağlantı kopması

Mesaj gönderen akdatilla »

merhaba
application.terminate komutu yerine "halt" komutunu kullanmayı dene.
Kullanıcı avatarı
serbek_tr
Üye
Mesajlar: 362
Kayıt: 16 Ağu 2004 12:54

Re: Firebird Bağlantı kopması

Mesaj gönderen serbek_tr »

Taskkill komutu işe yaramadı. Application.Terminate yerine halt kullandım oda Terminate komutundan farklı davranmadı yine ardı ardına uygulama hata mesajları çıktı ortaya
Procedure Forum.Imza(Sender: TObject)
Begin
ShowMessage('Her türlü fikire, Her zaman açığım')
End;
Kullanıcı avatarı
serbek_tr
Üye
Mesajlar: 362
Kayıt: 16 Ağu 2004 12:54

Re: Firebird Bağlantı kopması

Mesaj gönderen serbek_tr »

Arkadaşlar ilginize teşekkür ederim.
Forumda başk birşey ararken ozzyksk arkadaşın 2006 verdiği bir kod işimi gördü kendisine çok teşekkür ederim
bende aynı kodu buraya tekrar veriyorum.

Kod: Tümünü seç

var
  hWindowHandle: HWND;
  hprocessID: INTEGER;
  processHandle: THandle;
  DWResult: DWORD;
begin
  hWindowHandle:=FindWindow(nil, 'notepad');
  SendMessageTimeout(hWindowHandle, WM_CLOSE, 0, 0,
    SMTO_ABORTIFHUNG or SMTO_NORMAL, 5000, DWResult);

  if isWindow(hWindowHandle) then
  begin
    // PostMessage(hWindowHandle, WM_QUIT, 0, 0);

    { Get the process identifier for the window}
    GetWindowThreadProcessID(hWindowHandle, @hprocessID);
    if hprocessID <> 0 then
    begin
      { Get the process handle }
      processHandle := OpenProcess(PROCESS_TERMINATE or PROCESS_QUERY_INFORMATION,
        False, hprocessID);
      if processHandle <> 0 then
      begin
        { Terminate the process }
        TerminateProcess(processHandle, 0);
        CloseHandle(ProcessHandle);
      end;
    end;
  end;
  sleep(500);
end;
Procedure Forum.Imza(Sender: TObject)
Begin
ShowMessage('Her türlü fikire, Her zaman açığım')
End;
Cevapla