Главная страница
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-1196232702
roughneck
2007-11-28 09:51
2007.12.23
Окна всегда поверх всех окон


6-1176124977
paradox
2007-04-09 17:22
2007.12.23
подключение через сокеты


3-1187258076
Lavrenty
2007-08-16 13:54
2007.12.23
Некорректное отключение от базы


15-1195783594
Forest
2007-11-23 05:06
2007.12.23
Двухядерные процессоры работают под Виндос МЕ или 9х серии ?


15-1195550328
misha_gr
2007-11-20 12:18
2007.12.23
Borland C++ Builder 5.0 download