![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Исключение при неустановленных драйверах [D6, IB6.x]
Анонимщик © (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]Если библиотеки линкуются статически, то никак.