powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Подключение библиотеки к базе InterBse
11 сообщений из 11, страница 1 из 1
Подключение библиотеки к базе InterBse
    #32037223
Den
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Den
Гость
Работаю на FireBird (IB 6.0), написал библиотеку ib_FM.dll :

Function Floor (Kol:Real):Integer;cdecl;export;
begin
Result:=Round(Int(Kol));
end;

Function TrimChar(InString:PСhar):PChar;cdecl;export;
begin
Result:=PChar(Trim(AnsiString(InString)));
end;

exports Floor,TrimChar;

Обьявил её в базе InterBase:

DECLARE EXTERNAL FUNCTION FLOOR
DOUBLE PRECISION
RETURNS INTEGER BY VALUE
ENTRY_POINT 'floor' MODULE_NAME 'ib_FM';

DECLARE EXTERNAL FUNCTION MYTRIM
CSTRING(256)
RETURNS CSTRING(256)
ENTRY_POINT 'TrimChar' MODULE_NAME 'ib_FM';

Саму библиотеку поместил в каталог BIN InterBase но при попытке вставить функцию в процедуру машина матюкается на предмет того, что она не может найти эту самую функцию. При чем IBExpert енту функцию
видит и вставляет по контексту, а при попытке сделать Commit получаю всё тот же мат. Размещение этой библиотеки в каталоге WINDIWS/SYSTEM к
улучшению не привело.
Обьясните дурню где я торможу !!!!!!
...
Рейтинг: 0 / 0
Подключение библиотеки к базе InterBse
    #32037333
maximF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне кажется, что UDF надо располагать в
"...\Firebird\UDF\" или настраивать переменую EXTERNAL_FUNCTION_DIRECTORY в файле ibconfig. Это всё описано в доке по интербэйсу с Борланда.
...
Рейтинг: 0 / 0
Подключение библиотеки к базе InterBse
    #32037363
Den
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Den
Гость
Для maximF - если знаешь как, обьясни на пальцах, каким образом прописывать EXTERNAL_FUNCTION_DIRECTORY в файле ibconfig.
...
Рейтинг: 0 / 0
Подключение библиотеки к базе InterBse
    #32129633
discretus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если хочешь прописать путь в конфигурационном файле IB, то это делается так

EXTERNAL_FUNCTION_DIRECTORY "E:\WLDB" (в конце файла),

но в твойм случае это не поможет.
У меня таже самая проблема, и я ее пока не решил.
Единственная разница, я пытаюсь подключить их UDF из IB_UDF.DLL
(если хочешь, то можешь найти ее описание в документации: см. "Developer's guide.pdf", там есть список всех функций, описанных в этой 'dll').

(выдает ошибку:Invalid request BLR at offset 32
function SUBSTR is not defined
module name or entrypoint could not be found...), хотя я все объявил и т.д.:(((

Если сможешь разрешить свою проблему, то не мог бы мне сообщить как.
(на всякий случай моя аська: 154966740) Буду очень благодарен.
...
Рейтинг: 0 / 0
Подключение библиотеки к базе InterBse
    #32129683
StarWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
discretus
Попробуй положить библиотеку в папку UDF (впрочем она там и лежит и у меня без проблем подключается входящем в комплект поставки скриптом)

Den
Может я конечно что-то не понимаю, но я объявляю секцию export несколько иначе, ты тут не указываешь под каким имянем ее экспортить. Мне кажется нужно так

exports Floor name 'Floor',
TrimChar name 'TrimChar';

И в качестве послесовия, честно говоря не вижу зачем тебе эти функции... TrimChar есть в стандартной библиотеки, там правда она разбита на 2, а функция Floor вообще по мойму бессмысленна, подобная же операция выполняется при помощи cast(x as integer). Я бы скорее написал несколько иную функцию, которая не округляет , а отсекает дробную часть.

Всего наилучшего, господа
...
Рейтинг: 0 / 0
Подключение библиотеки к базе InterBse
    #32129695
discretus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StarWind:
Все это я уже пробовал (и их скриптом и своим) - результат один - не работает.
Может быть дело в том, что после выполнения скрипта метадата имеет несколько отличающийся вид:
метадата:
DECLARE EXTERNAL FUNCTION SUBSTR
CSTRING(256) CHARACTER SET WIN1251, SMALLINT, SMALLINT
RETURNS CSTRING(256) CHARACTER SET WIN1251 FREE_IT
ENTRY_POINT 'IB_UDF_substr' MODULE_NAME 'ib_udf';
а скрипт был:
DECLARE EXTERNAL FUNCTION SUBSTR
CSTRING(256), SMALLINT, SMALLINT
RETURNS CSTRING(256) FREE_IT
ENTRY_POINT 'IB_UDF_substr' MODULE_NAME 'ib_udf';

Дело точно в этих параметрах, т.к. пробовал из той же стандартной библиотеки (ib_udf.dll) подключать функции, работающие с числами - все впорядке. А как дело доходит до символов......:(((((
...
Рейтинг: 0 / 0
Подключение библиотеки к базе InterBse
    #32129697
StarWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не знаю, поможет или нет, но у меня база создана с кодировкой Win1251
...
Рейтинг: 0 / 0
Подключение библиотеки к базе InterBse
    #32129992
discretus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня аналогично:(((
Может дело и не в кодировке вовсе?
А у тебя значит их библиотека работает?
Не подскажешь как ты регистрировал UDFs.
...
Рейтинг: 0 / 0
Подключение библиотеки к базе InterBse
    #32129999
StarWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у меня все четко работает
регистрировал при помощи штатного скрипта
...
Рейтинг: 0 / 0
Подключение библиотеки к базе InterBse
    #32130025
av
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
привет!

В команде DECLARE EXTERNAL FUNCTION FLOOR регистр ENTRY_POINT имеет значение

после изменения UDF необходимо переконектится к базе, только тогда изменения будут реально заметны.
...
Рейтинг: 0 / 0
Подключение библиотеки к базе InterBse
    #32130472
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извиняюсь, что влажу, но позвольте заметить о функции:

Function Floor (Kol:Real):Integer;cdecl;export;
begin
Result:=Round(Int(Kol));
end;

1 - в качестве параметров передаются указатели, т.е. или с var, или с ^;
2 - зачем нужно export; ? - выкинь
3 - Result:=Round(Int(Kol)); - что такое Int?
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Подключение библиотеки к базе InterBse
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]