Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Исключение при неустановленных драйверах [D6, IB6.x]


Страницы:   1 2

Анонимщик ©   (2004-07-02 15:17:00) 

Использую IBX
При запуске клиентской программы происходит исключение еще до Application.Run, если драйвера FireBird'а не установлены. Назначение программа, в принципе, не ограничивается работой с БД, поэтому ставить их на клиенте иногда не нужно.
Как можно побороть?


Анонимщик   (2004-07-02 17:48:00) [1]

Убедили, спасибо.


Reindeer Moss Eater   (2004-07-02 16:53:00) [2]

Глянул в ibintf.pas.
Нету там статического импорта.
Там он динамический.

Главное не допустить вызова
procedure LoadIBLibrary;

раньше, чем это реально надо


Соловьев   (2004-07-02 16:44:00) [3]


> Просто брось на форму TIBDataBase и больше ничего не делай,
> кроме билда. А потом запусти экзешник на машине без gds32.dll,
> и больше не умничай, хорошо?


procedure TDm.DataModuleCreate(Sender: TObject);
var ibd: TIBDatabase;
begin
       try
               ibd := TIBDatabase.Create(DM);
               showmessage('gds32.dll есть');
       except
               showmessage('gds32.dll нет');
       end;
end;

запустил на машине где нету библиотеки - все нормально.
ОС XP


Reindeer Moss Eater   (2004-07-02 16:36:00) [4]

Ну я в них не глядел.

Но способ-то простой (хотя и трудоемкий)
Найти интерфейс с gds и переписать все на динамический импорт, добаваив процедуру загрузки/инициализации по требованию


Соловьев   (2004-07-02 16:35:00) [5]


> Просто брось на форму TIBDataBase и больше ничего не делай,
> кроме билда

ну создавай обьект сам.


Анонимщик   (2004-07-02 16:33:00) [6]

Reindeer Moss Eater
Может, чего-то в ее исходниках (IBX) подправить? Мне бы самый простой способ.


Reindeer Moss Eater   (2004-07-02 16:31:00) [7]

Либо бить свою приладу на DLL/пакеты, выносить все IB-dependent туда, и грузить опционально, проверив наличие gds


Анонимщик   (2004-07-02 16:31:00) [8]

Reindeer Moss Eater
Это я не Вам писал, а Соловьеву


Reindeer Moss Eater   (2004-07-02 16:29:00) [9]

Выход - переписать библиотеку IBX


Анонимщик   (2004-07-02 16:28:00) [10]

Reindeer Moss Eater
Это неважно, создается он как Create или нет. Исключение все равно будет, как Вы правильно заметили, коль компоновка статическая


Anatoly Podgoretsky   (2004-07-02 16:27:00) [11]

Убрать из проекта БД


Reindeer Moss Eater   (2004-07-02 16:26:00) [12]

Ты дарагой сам не умничай.
И читай пост № 2


Анонимщик   (2004-07-02 16:24:00) [13]

Я же сказал уже.
И потом, мне незачем писать
IBDatabase.Connected := true
поскольку при Create я еще пути не знаю.
Ты бы проверил сначала, а потом отвечал.
Просто брось на форму TIBDataBase и больше ничего не делай, кроме билда. А потом запусти экзешник на машине без gds32.dll, и больше не умничай, хорошо?


Reindeer Moss Eater   (2004-07-02 16:17:00) [14]

А зачем создавать модуль данных всегда, если программа не ограничена работой с БД?


Соловьев   (2004-07-02 16:05:00) [15]

берем пишем при Create модуля данных:
try
IBDatabase.Connected := true;
except
end;
и не будет исключения.


Анонимщик   (2004-07-02 16:02:00) [16]

Я же сказал: нет.


Соловьев   (2004-07-02 16:00:00) [17]


> Нет.

да :)


Соловьев   (2004-07-02 16:00:00) [18]


> Нет.

да :)


Анонимщик   (2004-07-02 15:52:00) [19]

Соловьев.
Нет.

Reindeer Moss Eater
И что сделать, чтобы поменьше менять?


Reindeer Moss Eater   (2004-07-02 15:40:00) [20]

Если библиотеки линкуются статически, то никак.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо