![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
решение проблемы обрыва коннекта в IBX [D5, IB или FB]
GanibalLector © (2004-07-13 20:21:00)Вот,опять хотел вернуться к этой проблеме.Завтра намечается свободный день и,соответственно,хочу попробовать.Итак,на ibase.ru две статьи по этому поводу.
http://www.ibase.ru/fibc/ibx_disc.htm
http://www.ibase.ru/devinfo/ibx_connect.txt
Вопрос,а какую из этих статей применять???Дальше больше...после изменений,которые описаны в этих статьях,я думал что появится новое событие.Но внимательно пригляделся к САБЖу и увидел,что нового события не будет.Соответственно,возникает второй вопрос,как отловить обрыв коннекта???
З.Ы. Может не мучаться с IBX,а у китайцев взять FibPlus???Говорят,что там-то есть такое событие(это я про обрыв).
GanibalLector (2004-07-13 21:39:00) [1]Большое спасибо.Ща попробую.
jack128 (2004-07-13 21:14:00) [2]
> Пардон конечно,но занимаюсь самообразованием(по книжкам
> и т.д)...
я тоже. Надо заметить, что большенство обитателей форума(исключая майско-декабрьские наплывы студентов) не учились программированию в ВУЗе.
> Пардон,но не знаю как.Подскажи.
type
TIbDataBase = class
private
FOnConnectionLost: TNotifyEvent;
protected
procedure DoConnectionLost; dynamic;
published
property OnConnectionLost: TNotifyEvent read FOnConnectionLost write FOnConnectionLost;
end;
procedure TIbDataBase.DoConnectionLost;
begin
if Assigned(FOnConnectionLost) then
FOnConnectionLost(Self);
end;
теперь вызываешь процедуру DoConnectionLost в том месте где ivan_ra поднял исключение. Только учти, весьма вероятно, что в этом событии ты НЕ сможешь по новой подключиться к базе. Зависит от кода, который вызывает InternalClose...
GanibalLector (2004-07-13 20:51:00) [3]2 jack128
М-да...я видел то.Но не придал особого значения.
>не думаю, чтоо нужно иметь семь пядей во лбу, чтобы догадаться как сделать событие OnConnectionLost ....
Пардон,но не знаю как.Подскажи.
З.Ы. Пардон конечно,но занимаюсь самообразованием(по книжкам и т.д)...Поэтому такие вопросы.
jack128 (2004-07-13 20:34:00) [4]
> Но внимательно пригляделся к САБЖу и увидел,что нового события
> не будет.Соответственно,возникает второй вопрос,как отловить
> обрыв коннекта???
Открываю http://www.ibase.ru/devinfo/ibx_connect.txtи что же я вижу?
А вижу я следующее:
------начало цитаты------------------
К сожалению, в конце процедуры TIBDatabase.InternalClose уже не будет
работать IBDatabaseError. Я поместил туда простой эксепшн:
if FLostConnection then // все-таки надо что-то сообщить
raise Exception.Create('Connection lost!'); // ivan_ra
Правильней будет форматировать его как это делается в IBDatabaseError,
но в принципе, юзеру и так должно быть понятно: программу надо завершать
или подключаться по новой
------------конец цитаты-------------------------------------------
не думаю, чтоо нужно иметь семь пядей во лбу, чтобы догадаться как сделать событие OnConnectionLost ....