Снова про разрыв коннекта (патч IBX)

IBX, FIBPlus, UIB, ADO, .Net и прочее-прочее-прочее, в общем все, что относится к созданию приложений, работающих с InterBase, Firebird и Yaffil - клиент-серверных, трехзвенных, консольных и т.п.

Модератор: kdv

Ответить
DenVK
Сообщения: 7
Зарегистрирован: 03 июл 2007, 16:49

Снова про разрыв коннекта (патч IBX)

Сообщение DenVK » 03 июл 2007, 17:01

Народ, помогите разобраться в последовательности действий при установке патча
http://www.ibase.ru/fibc/ibx_disc.htm
Указанные в статье файлы поправил, сделал build, объектные и dcu файлы переписал поверх в соответствующие директории. Ноль эффекта. Хэндлы запущенных транзакций после разрыва коннекта не освобождаются. Что не так делаю? Как правильно пропатчить IBX 6.08 под Builder 6.

dimitr
Разработчик Firebird
Сообщения: 888
Зарегистрирован: 26 окт 2004, 16:20

Сообщение dimitr » 03 июл 2007, 21:50

вот только с форумом ты не иначе как промахнулся...

DenVK
Сообщения: 7
Зарегистрирован: 03 июл 2007, 16:49

Сообщение DenVK » 04 июл 2007, 08:50

dimitr писал(а):вот только с форумом ты не иначе как промахнулся...
Хорошо, извиняюсь, ну так всетаки поможете разобраться?

stix-s
Заслуженный разработчик
Сообщения: 557
Зарегистрирован: 13 дек 2005, 11:52

Re: Снова про разрыв коннекта (патч IBX)

Сообщение stix-s » 05 июл 2007, 09:09

DenVK писал(а): Народ, помогите разобраться в последовательности действий при установке патча
http://www.ibase.ru/fibc/ibx_disc.htm
Указанные в статье файлы поправил, сделал build, объектные и dcu файлы переписал поверх в соответствующие директории. Ноль эффекта. Хэндлы запущенных транзакций после разрыва коннекта не освобождаются. Что не так делаю? Как правильно пропатчить IBX 6.08 под Builder 6.
Я просто купил FIB+

Кузнецов Евгений
Сообщения: 144
Зарегистрирован: 16 фев 2006, 22:36

Re: Снова про разрыв коннекта (патч IBX)

Сообщение Кузнецов Евгений » 05 июл 2007, 09:21

Доброго времени суток!
DenVK писал(а): Как правильно пропатчить IBX 6.08 под Builder 6.
Посмотрите http://www.ov-soft.com/components/ibxm/ibxm.htm

Dimitry Sibiryakov
Заслуженный разработчик
Сообщения: 1436
Зарегистрирован: 15 сен 2005, 09:05

Сообщение Dimitry Sibiryakov » 05 июл 2007, 12:34

Я, конечно, сейчас открою флеймовую тему, но, по-моему, если приложение гуевое и построено на дб-аварии, то единственный способ корректно обработать потерю коннекта - сказать об этом пользователю и панически выгрузиться, бросая все нечестным трудом нажитое.

DenVK
Сообщения: 7
Зарегистрирован: 03 июл 2007, 16:49

Сообщение DenVK » 05 июл 2007, 17:55

Dimitry Sibiryakov писал(а):Я, конечно, сейчас открою флеймовую тему, но, по-моему, если приложение гуевое и построено на дб-аварии, то единственный способ корректно обработать потерю коннекта - сказать об этом пользователю и панически выгрузиться, бросая все нечестным трудом нажитое.
При чем тут приложение, когда это касяк ibx, разве приятно лажать чужие разработки? Приложение не может быть построено на дб-аварии, авария может случиться в любом приложении, построенном на ibx6.08, задача и состояла в том, как этого избежать, если возможно, или на край -сообщить пользователю что мол-дисконнект, приложение будет закрыто, заходи по-новой! Покупать fib - не до этого. А КУЗНЕЦОВУ ЕВГЕНИЮ БОЛЬШОЕ СПАСИБО ЗА ССЫЛОЧКУ ! БУДУ РАЗБИРАТЬСЯ.

DenVK
Сообщения: 7
Зарегистрирован: 03 июл 2007, 16:49

Сообщение DenVK » 05 июл 2007, 18:20

Вопрос еще такой есть. "Как поймать exception именно ibx ?".
Если написать свою функцию перехвата всех сообщений-
Application->OnException=MyException;
...
void __fastcall TMainForm::MyException(TObject *Sender,Exception *E)
{...}
то это не родственные exception и IBErrorCode тут не поймаешь.
Писать везде где идет работа с базой таким образом-
try{..Open()..Commit()..Execute..и т.д}
catch(Ib::EIBError *err)
{
if(err->IBErrorCode==335544721)
{ ShowMessage("Отсутствует соединение с базой !");}
}-тоже геморно.
Есть ли соображения по этому поводу, уважаемые форумчане?

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 06 июл 2007, 01:11

родственные, поймаешь. см наследование exceptions в ibx.

stix-s
Заслуженный разработчик
Сообщения: 557
Зарегистрирован: 13 дек 2005, 11:52

Сообщение stix-s » 06 июл 2007, 07:16

DenVK писал(а):Вопрос еще такой есть. "Как поймать exception именно ibx ?".
Если написать свою функцию перехвата всех сообщений-
Application->OnException=MyException;
...
void __fastcall TMainForm::MyException(TObject *Sender,Exception *E)
{...}
то это не родственные exception и IBErrorCode тут не поймаешь.
Писать везде где идет работа с базой таким образом-
try{..Open()..Commit()..Execute..и т.д}
catch(Ib::EIBError *err)
{
if(err->IBErrorCode==335544721)
{ ShowMessage("Отсутствует соединение с базой !");}
}-тоже геморно.
Есть ли соображения по этому поводу, уважаемые форумчане?
А написать универсальную процедуру обработки Exception именно для EIBError и тыкать ее вместо ShowMessage("Отсутствует... никак?

Dimitry Sibiryakov
Заслуженный разработчик
Сообщения: 1436
Зарегистрирован: 15 сен 2005, 09:05

Сообщение Dimitry Sibiryakov » 06 июл 2007, 07:48

DenVK писал(а):При чем тут приложение, когда это касяк ibx, разве приятно лажать чужие разработки? Приложение не может быть построено на дб-аварии
Ну чувак... Я даже не знаю...
"Гуевое" - имеющее GUI.
"Дб-авария" - db-aware компоненты.

DenVK
Сообщения: 7
Зарегистрирован: 03 июл 2007, 16:49

Сообщение DenVK » 06 июл 2007, 09:13

Dimitry Sibiryakov писал(а):
DenVK писал(а):При чем тут приложение, когда это касяк ibx, разве приятно лажать чужие разработки? Приложение не может быть построено на дб-аварии
Ну чувак... Я даже не знаю...
"Гуевое" - имеющее GUI.
"Дб-авария" - db-aware компоненты.
Ну хорошо, отмазки приняты !!! :D
Интерессная терминология...,запишем на винчестер : :arrow: :!: :wink:
Последний раз редактировалось DenVK 06 июл 2007, 09:18, всего редактировалось 1 раз.

DenVK
Сообщения: 7
Зарегистрирован: 03 июл 2007, 16:49

Сообщение DenVK » 06 июл 2007, 09:23

stix-s писал(а):А написать универсальную процедуру обработки Exception именно для EIBError и тыкать ее вместо ShowMessage("Отсутствует... никак?
Один хр.. везде писать try..catch
-я об этом говорил. Похоже так и придется делать,
а процедуру то можно хоть на все коды ошибок написать.

DenVK
Сообщения: 7
Зарегистрирован: 03 июл 2007, 16:49

Сообщение DenVK » 06 июл 2007, 09:39

kdv писал(а):родственные, поймаешь. см наследование exceptions в ibx.
Уточните, пожалуйста, где это смотреть?
Насколько я понимаю, если и срабатывает IBerror. то в Application.OnException попадает код ошибки не объекта ibx. а объекта формы, например кнопки и т.д, и как "усыновить" IBError, не понимаю???

stix-s
Заслуженный разработчик
Сообщения: 557
Зарегистрирован: 13 дек 2005, 11:52

Сообщение stix-s » 06 июл 2007, 10:09

DenVK писал(а): Один хр.. везде писать try..catch
А чем это так напрягает? :) я в процедуре обработки ошибок их иногда еще и в лог пишу, чтоб потом концы найти :)

hvlad
Разработчик Firebird
Сообщения: 1244
Зарегистрирован: 21 мар 2005, 10:48

Сообщение hvlad » 06 июл 2007, 10:32

DenVK писал(а):
kdv писал(а):родственные, поймаешь. см наследование exceptions в ibx.
Уточните, пожалуйста, где это смотреть?
Насколько я понимаю, если и срабатывает IBerror. то в Application.OnException попадает код ошибки не объекта ibx. а объекта формы, например кнопки и т.д, и как "усыновить" IBError, не понимаю???
Почитай таки руководство по тому языку программирования, который ты мучаешь, да ?
Может и терминология перестанет быть такой 'интересной'...
и остальное рассосётся...

Attid
Спец
Сообщения: 377
Зарегистрирован: 14 ноя 2006, 09:58

Сообщение Attid » 06 июл 2007, 22:49

DenVK писал(а): Один хр.. везде писать try..catch
а можно в процерку вынести ,только вместо MyDataSet.Open ,будешь вызывать QuietOpen(MyDataSet).
а обработах там напихать хоть по самое не балуйся.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 07 июл 2007, 19:18

Насколько я понимаю, если и срабатывает IBerror. то в Application.OnException попадает код ошибки не объекта ibx. а объекта формы
нефиг теоретизировать. взял да попробовал. чего мусолить-то тут?

Ответить