Регистрация UDF. Работа с Ini
Регистрация UDF. Работа с Ini
Добрый день.
Подскажите пожалуйста, как в IBExpert зарегистрировать функция SubStr (IB75)
Делаю:
Имя - MySubStr
Имя библиотеки - id_udf.dll
Точка входа - SUBSTR(fn_SUBSTR и пр., перепробовал кучу вариантов)
Входные аргументы - CSTRING(80), SMALLINT, SMALLINT
Возвращает - CSTRING(80)
Механизм возвращения - By Reference
Стоит галка на FreeIt
А при Select выдаёт ошибку
"
Invalid token.
invalid request BLR at offset 74.
function MYSUBSTR is not defined.
module name or entrypoint could not be found.
"
ib_udf.dll пробовал копировать в самые разные места - не помогает
Эксперементировал с точкой входа - результат тот же
2. Если база лежит на сервере(отключено запись/чтение), и там же лежат Ini-файлы, как организовать чтение/запись Ini-файлов для пользователей. Или просто взять их и выложить в папку открытую для чтения/записи
Заранее спасибо
Подскажите пожалуйста, как в IBExpert зарегистрировать функция SubStr (IB75)
Делаю:
Имя - MySubStr
Имя библиотеки - id_udf.dll
Точка входа - SUBSTR(fn_SUBSTR и пр., перепробовал кучу вариантов)
Входные аргументы - CSTRING(80), SMALLINT, SMALLINT
Возвращает - CSTRING(80)
Механизм возвращения - By Reference
Стоит галка на FreeIt
А при Select выдаёт ошибку
"
Invalid token.
invalid request BLR at offset 74.
function MYSUBSTR is not defined.
module name or entrypoint could not be found.
"
ib_udf.dll пробовал копировать в самые разные места - не помогает
Эксперементировал с точкой входа - результат тот же
2. Если база лежит на сервере(отключено запись/чтение), и там же лежат Ini-файлы, как организовать чтение/запись Ini-файлов для пользователей. Или просто взять их и выложить в папку открытую для чтения/записи
Заранее спасибо
ууу... а написать declare external function нельзя?
www.ibase.ru/ibfaq.htm#udf читал? особенно про free_it?module name or entrypoint could not be found.
если база лежит на сервере, то ее вообще кроме сервера видеть никому не надо. То есть, каталог, где она лежит, шарить нельзя.Если база лежит на сервере(отключено запись/чтение)
??? каких ini-файлов? а настройки юзеров в blob разве нельзя хранить?Ini-файлов для пользователей
За идею с Ini - Blob большое спасибо
Когда в IBExpert объявляешь функция, скрипт "Declare..." создаётся автоматически, и у меня он нормально компилируется. А уже в Select выскакивает вышеназванная ошибка. А так не только с SubStr, но и с функцией, например, MOD.
А ссылки, и не только эти, я полночи читал, прежде чем обратиться в форум ... не помогло
Когда в IBExpert объявляешь функция, скрипт "Declare..." создаётся автоматически, и у меня он нормально компилируется. А уже в Select выскакивает вышеназванная ошибка. А так не только с SubStr, но и с функцией, например, MOD.
А ссылки, и не только эти, я полночи читал, прежде чем обратиться в форум ... не помогло
в упомянутом документе вот это читал?
"базовая библиотека (или другие) ib_udf.dll зависит от библиотеки ib_util.dll. Соответственно, зависимую библиотеку загружает не сервер, а именно оригинальная dll. Поэтому правила загрузки подчиняются правилам, действующим например для Windows для функции Win32 - LoadLibrary. А это значит что ib_udf.dll должна находиться в системном пути или в общем пути переменной PATH (для embedded допускается в текущем каталоге)."
и еще есть такая штука, как filemon (sysinternals.com). пускаешь его, потом пробуешь обратиться к udf. и filemon тебе показывает, какие файлы грузит сервер, и чего он не может загрузить.
"базовая библиотека (или другие) ib_udf.dll зависит от библиотеки ib_util.dll. Соответственно, зависимую библиотеку загружает не сервер, а именно оригинальная dll. Поэтому правила загрузки подчиняются правилам, действующим например для Windows для функции Win32 - LoadLibrary. А это значит что ib_udf.dll должна находиться в системном пути или в общем пути переменной PATH (для embedded допускается в текущем каталоге)."
и еще есть такая штука, как filemon (sysinternals.com). пускаешь его, потом пробуешь обратиться к udf. и filemon тебе показывает, какие файлы грузит сервер, и чего он не может загрузить.
ты ibexpert от сервера отличаешь? Нахрена тебе лог обращений к файлам ibexpert-а? Ребят, забодало уже лет как 5 объяснять что с базами работает сервер, а не клиент.
и потом, ЧИТАЙ ВНИМАТЕЛЬНЕЕ. ТАМ НАПИСАНО ПРО IB_UTIL, а не про IB_UDF. Более невнимательного читателя еще не встречал.
базовая библиотека (или другие) ib_udf.dll зависит от библиотеки ib_util.dll.
и потом, ЧИТАЙ ВНИМАТЕЛЬНЕЕ. ТАМ НАПИСАНО ПРО IB_UTIL, а не про IB_UDF. Более невнимательного читателя еще не встречал.
базовая библиотека (или другие) ib_udf.dll зависит от библиотеки ib_util.dll.
Спасибо за внимание. Разобрался кое-как. Дело в том, что я использовал описание этой функции из Dev.Guide, лежащего на Вашем сайте. А он у Вас устаревший, про что там и было написано.
Ещё тогда если можно вопросик. Допустим, я пишу запрос
Select
CardName,
SubStr(CardName,1,10)
from Cards
Можно ли отсортировать выборку по "SubStr(CardName,1,10)". Я понимаю, что это то же самое, что и сортировка по CardName, но у меня задача стоит вообще-то чуть-чуть по другому и поэтому вопрос я упростил
Ещё тогда если можно вопросик. Допустим, я пишу запрос
Select
CardName,
SubStr(CardName,1,10)
from Cards
Можно ли отсортировать выборку по "SubStr(CardName,1,10)". Я понимаю, что это то же самое, что и сортировка по CardName, но у меня задача стоит вообще-то чуть-чуть по другому и поэтому вопрос я упростил
-
- Заслуженный разработчик
- Сообщения: 644
- Зарегистрирован: 15 фев 2005, 11:34
Код: Выделить всё
Select
CardName,
SubStr(CardName,1,10)
from Cards
order by 2