![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как получить дескриптор текущего соединения в FB? [D7, IB6.x]
Viktor © (2004-01-07 23:00:00)
Перешел с BDE на IBX и встретился с проблемой передачи дескриптора текущего соединения с приложения в DLL.
Смысл такой: из приложения вызывается DLL, которая должна брать информацию из текущего соединения. В BDE использовался модуль BDE и указатель HDBIDB. А как это сделать в IBX никак не пойму. Помогите пожалуйста!
Viktor (2004-01-09 00:02:00) [1]
Ясно. Ну что ж будем бороться.
jack128 (2004-01-08 23:58:00) [2]
только ib api, со всеми вытекающими "удобствами"
Viktor (2004-01-08 23:27:00) [3]
Еще один вопрос. А другого пути нет?
Viktor (2004-01-08 23:21:00) [4]
Всем большое спасибо,особенно jack128, кажется все понял.
jack128 (2004-01-08 23:13:00) [5]
В основной проге и в dll"ке залазишь в Project|Options|Packages и ставишь галку "Build with run time packages".
И в основной проге пишешь такую функцию.
function GetDbConnection: TIbDatabase; export;
begin
Result := MainDataModule.MyIbDatabase;
end;
а во всех dll"ках вызываешь эту функцию и к этому IbDatabase вешаешь свои IbQuery и тд.
Только учти, чт с твоей программой нужно будет распростронять run time пакеты.
Viktor (2004-01-08 23:00:00) [6]
Простите, я не совсем понял (начинающий :(). Нельзя ли привести простенький пример.
jack128 (2004-01-08 22:57:00) [7]
> а просто указатель на IBDatabase передать нельзя?
Можно. Если компелировать DLL и основное приложение с run time пакетами.. Можно даже не указатель на IbDatabase передавать, а сам IbDatabase, ибо он сам и есть по сути - указатель..
Viktor (2004-01-08 22:11:00) [8]
Все дело в том, что при запуске DLL создается второе соединение, а нужно, что бы все происходило в рамках одного соединения. Извините, может я не ясно выразился. То есть при запуске приложения на сервере показан 1 пользователь, при запуске DLL - 2. Как сделать что бы остался 1.
Desdechado (2004-01-08 12:58:00) [9]
а просто указатель на IBDatabase передать нельзя?
Viktor (2004-01-08 00:01:00) [10]
Хорошо, как можно сделать по другому?
jack128 (2004-01-07 23:58:00) [11]
> а там этого свойства нет.
Как нет? Обнови IBX.
А вот как это использовать - даже не представляю(ну то есть представляю, но что то я сильно сомниваюсь, что ты будешь IB Api осваивать :-))...
Viktor (2004-01-07 23:43:00) [12]
Да, я согласен. В справке нашел. Но как его использовать, свойство ведь только для чтения.
Я делаю так:
В приложении создаю функцию:
function TDMClient.GetHandle: THandle;
begin
result:=IBDatabase1.??????
end;
а там этого свойства нет.
jack128 (2004-01-07 23:29:00) [13]
IBDatabase1.Handle???