Страница 1 из 1

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

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

Добавлено: 03 июл 2007, 21:50
dimitr
вот только с форумом ты не иначе как промахнулся...

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

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

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

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

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

Добавлено: 05 июл 2007, 12:34
Dimitry Sibiryakov
Я, конечно, сейчас открою флеймовую тему, но, по-моему, если приложение гуевое и построено на дб-аварии, то единственный способ корректно обработать потерю коннекта - сказать об этом пользователю и панически выгрузиться, бросая все нечестным трудом нажитое.

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

Добавлено: 05 июл 2007, 18:20
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("Отсутствует соединение с базой !");}
}-тоже геморно.
Есть ли соображения по этому поводу, уважаемые форумчане?

Добавлено: 06 июл 2007, 01:11
kdv
родственные, поймаешь. см наследование exceptions в ibx.

Добавлено: 06 июл 2007, 07:16
stix-s
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("Отсутствует... никак?

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

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

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

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

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

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

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

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