Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.012 c
2-1196358779
Pacific
2007-11-29 20:52
2007.12.23
Потоки


15-1195665400
peregrooz
2007-11-21 20:16
2007.12.23
как решается?


4-1176447569
Dmitry_177
2007-04-13 10:59
2007.12.23
Перевести SYSTEMTIME в строку


2-1196144972
Мистик
2007-11-27 09:29
2007.12.23
Сохранить аттач с руским именем из idmessage


8-1171205709
Daiger
2007-02-11 17:55
2007.12.23
DelphiX проблема




   Наверх