powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Написание UDR
25 сообщений из 94, страница 2 из 4
Написание UDR
    #39135995
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Симонов Денис!
You wrote on 23 декабря 2015 г. 13:50:28:

Симонов Денис> константы внутри классов он не умеет переопределять.
> Возможно можно вывернуться, но для этого надо весь модуль FbApi.pas переписать.
> Или понять как Адриано автоматом генеририровал этот файл с помощью idlай, йохонабаден!
крепка в бразилии конопля.
губительно воздействие её на некрепший мозг студиозов...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Написание UDR
    #39135996
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Viktor_bs,

1. Должна совпадать разрядность udr.dll и сервера
2. Конфиг насчёт udr верни в дефолт
3. Объявлял так?
Код: sql
1.
2.
3.
4.
5.
6.
  create function sum_args (
    n1 integer not null,
    n2 integer not null
  ) returns integer
  external name 'udr!sum_args'
  engine udr;
...
Рейтинг: 0 / 0
Написание UDR
    #39136025
Viktor_bs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисViktor_bs,

1. Должна совпадать разрядность udr.dll и сервера
2. Конфиг насчёт udr верни в дефолт
3. Объявлял так?
Код: sql
1.
2.
3.
4.
5.
6.
  create function sum_args (
    n1 integer not null,
    n2 integer not null
  ) returns integer
  external name 'udr!sum_args'
  engine udr;


Все совпадает.

1.



2. Конфиг дефолтный


3. Объявление функции взято из файла UdrSumArgs.pas
Код: plsql
1.
2.
3.
4.
5.
6.
  create function sum_args (
    n1 integer not null,
    n2 integer not null
  ) returns integer
  external name 'udr!sum_args'
  engine udr;
...
Рейтинг: 0 / 0
Написание UDR
    #39136038
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Viktor_bs,

udr_engine.dll в папке plugins есть?
...
Рейтинг: 0 / 0
Написание UDR
    #39136045
Viktor_bs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисViktor_bs,

udr_engine.dll в папке plugins есть?
Да, ставил инсталятором, ничего не трогал :)

P.S. Если что, с FB работаю очень давно :)
...
Рейтинг: 0 / 0
Написание UDR
    #39136080
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не так давно Адриано ныл в девеле, что с текущей системой плагинов UDR-ки так просто не
инсталлируются и грозился всё переделать напрочь. Ему дали по шустрым лапкам и правильно
сделали.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Написание UDR
    #39136085
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Viktor_bs,

копай processmonitor
...
Рейтинг: 0 / 0
Написание UDR
    #39136305
Viktor_bs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисViktor_bs,

ну дык в ошибке английским языком сказано что она должна лежать в plugins/udr
Денис, а Вы собирали эту DLL? У Вас есть опыт их написания?

Посмотрел Procmon-ом Русиновича, так к папке plugins/udr вообще никаких обращений нет. udr.dll пытается подняться с папки plugins и сваливается с ошибкой

В ночной сборке:
"Unsuccessful execution caused by system error that does not preclude successful execution of subsequent statements.
Entry point not found."

В RC1 была ошибка:
Error loading plugin UDR.
Standard plugin entrypoint does not exist in module C:\Firebird3\plugins/UDR.

Вот что происходит на коммите создания функции
...
Рейтинг: 0 / 0
Написание UDR
    #39136312
Viktor_bs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В продолжение...
depends видит точку входа firebird_udr_plugin
...
Рейтинг: 0 / 0
Написание UDR
    #39136347
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Viktor_bsДенис, а Вы собирали эту DLL? У Вас есть опыт их написания?


собирал. Грузится и работает нормально.
Ну какой на фиг опыт. Сам занимаюсь этим вторую неделю. Но уже смог что-то понять и даже написать. Это скорее для тренировки нежели для реального использования. Надо научится всё-таки. То, что смог понять подскажу.

Здесь тех кто пытался сделать udr почти нет. Разве что fb_user и NickDee их чуток трогали.
dimitr и hvlad могут подсказать побольше.

Viktor_bsПосмотрел Procmon-ом Русиновича, так к папке plugins/udr вообще никаких обращений нет. udr.dll пытается подняться с папки plugins и сваливается с ошибкой

В ночной сборке:
"Unsuccessful execution caused by system error that does not preclude successful execution of subsequent statements.
Entry point not found."

В RC1 была ошибка:
Error loading plugin UDR.
Standard plugin entrypoint does not exist in module C:\Firebird3\plugins/UDR.

Вот что происходит на коммите создания функции

Оно у вас не в той директории udr.dll ищет. Почему хз. Советую скачать заново снапшот и заменить все *.conf файлы на дефолтные. Ну может быть за исключением параметров кеша, порта и т.д.

У меня всё работает.

d:\fb\fb30\plugins\udr\udr.dll - это моя UDR

d:\fb\fb30\plugins\ должен содержать
udr_engine.conf
engine12.dll
fbtrace.dll
legacy_auth.dll
legacy_usermanager.dll
srp.dll
udr_engine.dll

А и ещё. У меня FB3 запущен как сервис. И подключаюсь я к нему через TCP/IP. Ну это на всякий случай. Мало-ли в других способах вызова баг есть.
...
Рейтинг: 0 / 0
Написание UDR
    #39136405
Viktor_bs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисА и ещё. У меня FB3 запущен как сервис. И подключаюсь я к нему через TCP/IP. Ну это на всякий случай. Мало-ли в других способах вызова баг есть.
Та все аналогично. Единственное что кроме 3-ки есть еще 2.5, но на разных портах.
Проверил на 2-х операционках. На Win7 x64 начало поднимать ст plugins/udr, но ошибка та-же.
Какая у вас операционка и разрядность?
...
Рейтинг: 0 / 0
Написание UDR
    #39136410
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Viktor_bs,

Windows 7 x64. Firebird 3.0.0.32246 x64. Ну и библиотека компилировалась на Delphi XE5 под x64.
...
Рейтинг: 0 / 0
Написание UDR
    #39136418
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Viktor_bs,

попробуй готовые dll'ки
Udr32.dll
Udr64.dll
...
Рейтинг: 0 / 0
Написание UDR
    #39136441
Viktor_bs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисViktor_bs,

попробуй готовые dll'ки
Udr32.dll
Udr64.dll

Спасибо!
Заработало :)

Что изменилось в исходниках, а то я буду ставить ХЕ5 и сам компилить, чтобы опять головой о стенку не биться.
...
Рейтинг: 0 / 0
Написание UDR
    #39136451
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Viktor_bs,

да ничего не менялось
...
Рейтинг: 0 / 0
Написание UDR
    #39136456
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

какие-нибудь настройки компилятора по умолчанию? вплоть до релиз/дебаг ?

вам бы обоим нажать в проекте Ctrl+O,O и сравнить дампы настроек
...
Рейтинг: 0 / 0
Написание UDR
    #39136459
Viktor_bs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисViktor_bs,

да ничего не менялось
Размер DLL изменился :) Был 1 183 232 байт стал 1 186 304 байт
В любом случае спасибо за помощь.
...
Рейтинг: 0 / 0
Написание UDR
    #39136460
Viktor_bs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AriochСимонов Денис,

какие-нибудь настройки компилятора по умолчанию? вплоть до релиз/дебаг ?

вам бы обоим нажать в проекте Ctrl+O,O и сравнить дампы настроек
Я вообще ничего не компилил. Брал готовую либу из примера (уже скомпиленую) и пытался ее заюзать.
...
Рейтинг: 0 / 0
Написание UDR
    #39136469
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Viktor_bs,

а там не было md5/sha1 - просто проверить что не побилось при скачивании?
...
Рейтинг: 0 / 0
Написание UDR
    #39136472
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Viktor_bs,

а... ну там да косячная была 32 битная сборка. В ней вообще этой функции не было.
Я думал что не включил в архив только исходники.
XE5 необязательно. Я не знаю под какую версию этот пример создавал Адриано. У меня стояла Delphi XE5, скомпилировал, вроде завелось. На Delphi 7 не компилится.
...
Рейтинг: 0 / 0
Написание UDR
    #39136476
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch,

где там? Этот пример я придумал. У Адриано только исходники выложены. И только для процедуры. Функцию я дописал по просьбе Viktor_bs.
md5 мне в лом создавать было
...
Рейтинг: 0 / 0
Написание UDR
    #39136478
Viktor_bs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AriochViktor_bs,

а там не было md5/sha1 - просто проверить что не побилось при скачивании?
Там в архиве, архив живой. md5/sha1 нет.
Сама dll живая, ее и точку входа depends видит.
...
Рейтинг: 0 / 0
Написание UDR
    #39136503
Viktor_bs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, в пакет запихнуть "в чистом виде" мне ее тоже не удалось.

README.packages.txt нашел следующее:
UDFs (DECLARE EXTERNAL FUNCTION) are currently not supported inside packages.

Я так понимаю это касается не только udf но и udr

Под "в чистом виде" я имею ввиду не

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
RECREATE PACKAGE BODY test
AS
BEGIN
  FUNCTION SUM_ARGS_NEW(N1 INTEGER, N2 INTEGER) RETURNS INTEGER
  AS
  BEGIN
    RETURN SUM_ARGS(N1, N2);
  END
END


а что-то типа
Код: sql
1.
2.
3.
4.
5.
6.
RECREATE PACKAGE BODY test
AS
BEGIN
  FUNCTION SUM_ARGS_NEW(N1 INTEGER, N2 INTEGER) RETURNS INTEGER
  EXTERNAL NAME 'udr!sum_args' ENGINE UDR;
END
...
Рейтинг: 0 / 0
Написание UDR
    #39136535
fb user
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов ДенисViktor_bs,

Вот тут лежит. Но рассчитан на Delphi XE5.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
procedure TSumArgsFunction.execute(status: Status; context: ExternalContext;
  inMsg: Pointer; outMsg: Pointer);
var
  xInMsg: TSumArgsInMessagePtr;
  xOutMsg: TSumArgsOutMessagePtr;
begin
  try
    xInMsg := TSumArgsInMessagePtr(inMsg);
    xOutMsg := TSumArgsOutMessagePtr(outMsg);
    if (xInMsg.n1Null or xInMsg.n2Null) then
    begin
      xOutMsg.result := 0;
      xOutMsg.resultNull := True;
    end
    else
    begin
      xOutMsg.result := xInMsg.n1 + xInMsg.n2;
      xOutMsg.resultNull := False;
    end;
  except
    on E: Exception do
      FbException.catchException(status, E);
  end;

end;


Блок try except вроде не нужен. Там ошибки и так ловятся.
...
Рейтинг: 0 / 0
Написание UDR
    #39136542
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fb user,

в принципе да. Потому что исключение перехватывает тот кто зовёт execute
...
Рейтинг: 0 / 0
25 сообщений из 94, страница 2 из 4
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Написание UDR
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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