Главная страница
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.019 c
2-1196315820
ryden
2007-11-29 08:57
2007.12.23
проблема с MDI приложением


15-1195899179
KilkennyCat
2007-11-24 13:12
2007.12.23
Заключение о профессиях и мечтаниях.


2-1195109108
jeet
2007-11-15 09:45
2007.12.23
как крутить картинки в delphi?


2-1196247523
Petrovich
2007-11-28 13:58
2007.12.23
Как передать данные из TMemoryStream в динамический массив?


2-1196113083
DeeCee
2007-11-27 00:38
2007.12.23
Задачка на массивы