Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.12.23;
Скачать: CL | DM;

Вниз

Некорректное отключение от базы   Найти похожие ветки 

 
Lavrenty ©   (2007-08-16 13:54) [0]

Здравствуйте все! Пытаюсь закрыть клиента без выдачи аварийного сообщения об отсутствии сети, если такое вдруг происходит(отключение от сети во время работы программы).

if IBDB_DFP.Connected then
   IBDB_DFP.Connected := false;

получаю сообщение:

"Unable to complete request network to host "...".
Error writing data to the connection.
Удалённый хост принудительно разорвал существующее подключение."

Программа при этом закрывается только через диспетчер задач.
Если так

if IsNetworkAlive(dwFlags) then
   IBDB_DFP.Connected := false;

то программа закрывается, но после сообщения

"Exception EIBInterBaseError in module InfprmationAllocation.exe at 0012CF64.
Unable to complete request network to host "...".
Error writing data to the connection.
Удалённый хост принудительно разорвал существующее подключение."

Пытаюсь обработать исключение

try
   IBDB_DFP.Connected := false;
 except
   on EIBInterBaseError do
     halt;
end;

то как и во втором варианте. Как закрыть прогамму без выдачи аварийного сообщения?


 
DrPass ©   (2007-08-16 15:18) [1]

Насколько я знаю, корректной обработки обрыва связи в компонентах IBX до сих пор так и нет. Возьми FIBPlus


 
Lavrenty ©   (2007-08-16 15:31) [2]


> DrPass ©   (16.08.07 15:18) [1]

К сожалению это невозможно


 
Anatoly Podgoretsky ©   (2007-08-16 16:00) [3]

> Lavrenty  (16.08.2007 15:31:02)  [2]

Зависит от того, что считать за корректность.


 
Ega23 ©   (2007-08-16 16:31) [4]


> К сожалению это невозможно


Почему?


 
PEAKTOP ©   (2007-08-16 19:12) [5]


//==============================================================================
procedure TApllicationMainForm.ApplicationOnException(Sender :TObject; E: Exception);
var
 ProcessHandle :THandle;
begin
 if(E is EIBError)then
   begin
   if(((E as EIBError).IBErrorCode=isc_network_error)or((E as EIBError).IBErrorCode=isc_lost_db_connection))then
     begin
     Dialogs.MessageDlg("Lost connection to database !", mtError, [mbOk],0);
     ProcessHandle := Windows.OpenProcess(PROCESS_TERMINATE, FALSE, Windows.GetCurrentProcessId);
     Windows.TerminateProcess(ProcessHandle, 4);
     end;
   end;
end;

procedure TApllicationMainForm.FormCreate(Sender :TObject);
begin
 Application.OnException := Self.ApplicationOnException;
end;



Страницы: 1 вся ветка

Текущий архив: 2007.12.23;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.012 c
2-1196173492
misha_gr
2007-11-27 17:24
2007.12.23
Application.BringToFront


15-1196066490
AIK
2007-11-26 11:41
2007.12.23
Офигели блин


15-1195910281
Vendict
2007-11-24 16:18
2007.12.23
Wide vs не-Wide 19"LCD


15-1195580908
master_asasin
2007-11-20 20:48
2007.12.23
Конференция


3-1187120241
Anti
2007-08-14 23:37
2007.12.23
Как создать генератор