|
Написание UDR
|
|||
---|---|---|---|
#18+
Добрый день! Подскажите где что можно посмотреть про UDR в FB3, не знаю с какой стороны подойти. У кого-то с "не разработчиков" есть опыт их написания? Как воспрользоваться примером в ...\examples\udr ? P.S. Начинаю посматривать в сторону 3-ки x64 SS, будет необходимость избавится от х86 UDF ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2015, 19:54 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
Viktor_bs, для начала определись на каком языке ты хочешь писать UDR. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2015, 19:59 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
Нет, сначала лучше всё-таки проверить, нет ли встроенных функций с тем же функционалом как у замещаемых UDF. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2015, 20:21 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, ну это само собой ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2015, 20:31 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
Симонов Денисдля начала определись на каком языке ты хочешь писать UDR.а там что, на java уже можно ваять ?! ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2015, 21:11 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
Таблоид, официально пока нет. Но Адриано чего-то там упорно мастерит. На C++ и Delphi можно ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2015, 21:16 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
Симонов Денис, C++ и Delphi в отношении vtable используют один и тот же ABI. И не только они, но и древнююющий Borland Tasm времен NT4.0 для flat модели также совместим с точки зрения виртуальных методов. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2015, 22:23 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
DBConstructorC++ и Delphi в отношении vtable используют один и тот же ABI. И не только они, но и древнююющий Borland Tasm времен NT4.0 для flat модели также совместим с точки зрения виртуальных методов. Учитывая, что это стандарт COM, ничего удивительного. Но есть ещё совершенно безумный FPC... PS: Откуда вдруг объекты в ассемблере?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2015, 22:33 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovPS: Откуда вдруг объекты в ассемблере?.. Borland TASM был весьма продвинутым. Там не только описывались классы, но и был реализован вызов функций без всяких муторных "mov ebp, esp", push/pop и далее по "тексту". Причем с учетом соглашений о вызовах. Что-то типа "invoke stdcall myfunc, eax, ebx, [myvar]". Точного синтаксиса, естественно, не помню, так как с тех пор прошло почти 20 лет. Так что вполне можно было цеплять какую-нибудь cstdlib и во всю юзать стандартные сишные функции. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2015, 22:51 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovНет, сначала лучше всё-таки проверить, нет ли встроенных функций с тем же функционалом как у замещаемых UDF. Нет, таких UDF точно нет. Может кто-то дать простенький пример на Delphi? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2015, 22:59 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
Viktor_bs, держи 18594051 . ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2015, 23:03 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
DBConstructorViktor_bs, держи 18594051 . Спасибо. Кхм, а функции сложения 2-х чисел на Delphi ни у кого нет ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 10:56 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
Viktor_bs, а на фига для этого UDR? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 11:35 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
Симонов ДенисViktor_bs, а на фига для этого UDR? :)) Я пример прошу как это сделать. А вообще нужно, например, переписать набор функций работы с полиномом или матрицей, запихнув их в пакеты с "человеческой" обработкой исключений. Это как минимум... ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 12:06 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
Viktor_bs, каких чисел? С плавающей точкой DOUBLE PRECISION или NUMERIC(n, m) или INTEGER? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 12:14 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
Симонов ДенисViktor_bs, каких чисел? С плавающей точкой DOUBLE PRECISION или NUMERIC(n, m) или INTEGER? Та без разницы. Нужен пример функции, а не процедуры. Так чтобы она скомпилилась и работала. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 12:19 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovНо есть ещё совершенно безумный FPC... Для него кстати есть пример COM-сервера ,но виджимо никому оказалось не надо, так и лежит почти никем не использованный ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 12:58 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
Ariochно виджимо никому оказалось не надо Вспоминая сколько мне пришлось доказывать, что (не) возврат интерфейса из функции в 64-х разрядной версии это именно баг и именно FPC, я ничему не удивляюсь. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 13:30 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, кстати в FPC это UDR всё равно не компилируется ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 13:39 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
Симонов ДенисViktor_bs, Вот тут лежит. Но рассчитан на Delphi XE5. Спасибо! А как ее подключить? Переименовал в udr.dll и кинул в папку plugins. При создании функции в IBExpert получаю Error loading plugin UDR. Standard plugin entrypoint does not exist in module C:\Firebird3\plugins/UDR. Игрища с конфигом не помогли. А вообще есть хоть какой-то драфт доки, кроме исходников Adriano? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 13:39 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
Hello, Симонов Денис! You wrote on 23 декабря 2015 г. 13:40:23: Симонов Денис> кстати в FPC это UDR всё равно не компилируетсяиз-за? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 13:40 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
Viktor_bs, ну дык в ошибке английским языком сказано что она должна лежать в plugins/udr ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 13:41 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
Мимопроходящий, Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
константы внутри классов он не умеет переопределять. Возможно можно вывернуться, но для этого надо весь модуль FbApi.pas переписать. Или понять как Адриано автоматом генеририровал этот файл с помощью idl ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 13:44 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
Симонов ДенисViktor_bs, ну дык в ошибке английским языком сказано что она должна лежать в plugins/udr Ложил, не помогло... External engine UDR not found. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 13:47 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
Hello, Симонов Денис! You wrote on 23 декабря 2015 г. 13:50:28: Симонов Денис> константы внутри классов он не умеет переопределять. > Возможно можно вывернуться, но для этого надо весь модуль FbApi.pas переписать. > Или понять как Адриано автоматом генеририровал этот файл с помощью idlай, йохонабаден! крепка в бразилии конопля. губительно воздействие её на некрепший мозг студиозов... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 13:55 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
Viktor_bs, 1. Должна совпадать разрядность udr.dll и сервера 2. Конфиг насчёт udr верни в дефолт 3. Объявлял так? Код: sql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 13:56 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
Симонов ДенисViktor_bs, 1. Должна совпадать разрядность udr.dll и сервера 2. Конфиг насчёт udr верни в дефолт 3. Объявлял так? Код: sql 1. 2. 3. 4. 5. 6.
Все совпадает. 1. 2. Конфиг дефолтный 3. Объявление функции взято из файла UdrSumArgs.pas Код: plsql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 14:15 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
Viktor_bs, udr_engine.dll в папке plugins есть? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 14:22 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
Симонов ДенисViktor_bs, udr_engine.dll в папке plugins есть? Да, ставил инсталятором, ничего не трогал :) P.S. Если что, с FB работаю очень давно :) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 14:25 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
Не так давно Адриано ныл в девеле, что с текущей системой плагинов UDR-ки так просто не инсталлируются и грозился всё переделать напрочь. Ему дали по шустрым лапкам и правильно сделали. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 14:47 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
Viktor_bs, копай processmonitor ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 14:50 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
Симонов Денис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. Вот что происходит на коммите создания функции ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 17:00 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
В продолжение... depends видит точку входа firebird_udr_plugin ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 17:02 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
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. Ну это на всякий случай. Мало-ли в других способах вызова баг есть. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 17:29 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
Симонов ДенисА и ещё. У меня FB3 запущен как сервис. И подключаюсь я к нему через TCP/IP. Ну это на всякий случай. Мало-ли в других способах вызова баг есть. Та все аналогично. Единственное что кроме 3-ки есть еще 2.5, но на разных портах. Проверил на 2-х операционках. На Win7 x64 начало поднимать ст plugins/udr, но ошибка та-же. Какая у вас операционка и разрядность? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 18:28 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
Viktor_bs, Windows 7 x64. Firebird 3.0.0.32246 x64. Ну и библиотека компилировалась на Delphi XE5 под x64. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 18:31 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
Симонов ДенисViktor_bs, попробуй готовые dll'ки Udr32.dll Udr64.dll Спасибо! Заработало :) Что изменилось в исходниках, а то я буду ставить ХЕ5 и сам компилить, чтобы опять головой о стенку не биться. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 18:51 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
Viktor_bs, да ничего не менялось ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 18:54 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
Симонов Денис, какие-нибудь настройки компилятора по умолчанию? вплоть до релиз/дебаг ? вам бы обоим нажать в проекте Ctrl+O,O и сравнить дампы настроек ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 18:56 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
Симонов ДенисViktor_bs, да ничего не менялось Размер DLL изменился :) Был 1 183 232 байт стал 1 186 304 байт В любом случае спасибо за помощь. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 18:59 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
AriochСимонов Денис, какие-нибудь настройки компилятора по умолчанию? вплоть до релиз/дебаг ? вам бы обоим нажать в проекте Ctrl+O,O и сравнить дампы настроек Я вообще ничего не компилил. Брал готовую либу из примера (уже скомпиленую) и пытался ее заюзать. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 19:01 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
Viktor_bs, а там не было md5/sha1 - просто проверить что не побилось при скачивании? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 19:06 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
Viktor_bs, а... ну там да косячная была 32 битная сборка. В ней вообще этой функции не было. Я думал что не включил в архив только исходники. XE5 необязательно. Я не знаю под какую версию этот пример создавал Адриано. У меня стояла Delphi XE5, скомпилировал, вроде завелось. На Delphi 7 не компилится. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 19:07 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
Arioch, где там? Этот пример я придумал. У Адриано только исходники выложены. И только для процедуры. Функцию я дописал по просьбе Viktor_bs. md5 мне в лом создавать было ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 19:09 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
AriochViktor_bs, а там не было md5/sha1 - просто проверить что не побилось при скачивании? Там в архиве, архив живой. md5/sha1 нет. Сама dll живая, ее и точку входа depends видит. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 19:10 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
Кстати, в пакет запихнуть "в чистом виде" мне ее тоже не удалось. 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.
а что-то типа Код: sql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 19:36 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
Симонов Денис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.
Блок try except вроде не нужен. Там ошибки и так ловятся. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 20:15 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
fb user, в принципе да. Потому что исключение перехватывает тот кто зовёт execute ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 20:47 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
Viktor_bs, у меня в пакетах всё работает. Ты бы хоть ошибку показал. Ах да, если делаешь через IBE то надо бы его обновить. Его внутренний парсер только недавно научился распознавать UDR. Viktor_bsREADME.packages.txt нашел следующее: UDFs (DECLARE EXTERNAL FUNCTION) are currently not supported inside packages. нет это качается только UDF. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 20:51 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
Симонов ДенисViktor_bs, у меня в пакетах всё работает. Ты бы хоть ошибку показал. Ах да, если делаешь через IBE то надо бы его обновить. Его внутренний парсер только недавно научился распознавать UDR. Viktor_bsREADME.packages.txt нашел следующее: UDFs (DECLARE EXTERNAL FUNCTION) are currently not supported inside packages. нет это качается только UDF. Да, сори, это был IBE ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 22:03 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
Всем привет! Не могу из udr вернуть varchar. Делаю так: create or alter function test_varchar( aString varchar(255)) returns varchar(255) EXTERNAL NAME 'test!test_varchar' ENGINE UDR type TVarCharMessage = record Length: Word; Value: array [0..0] of ansichar; end; PVarCharMessage = ^TVarCharMessage; procedure TTestVarCharFunction.execute(aStatus: IStatus; aContext: IExternalContext; aInMsg, aOutMsg: Pointer); begin try if (PVarCharMessage(aInMsg)^.Length = 0) then begin PVarCharMessage(aOutMsg)^.Length:= 0; // PVarCharMessage(aOutMsg)^.Value:= nil; end else begin PVarCharMessage(aOutMsg)^.Length:= PVarCharMessage(aInMsg)^.Length; Move(PVarCharMessage(aInMsg)^.Value, PVarCharMessage(aOutMsg)^.Value, PVarCharMessage(aOutMsg)^.Length); end; except on E: Exception do FbException.catchException(aStatus, E); end; end; Вызываем select test_varchar('hi test') from rdb$database Смотрим дамп в Delphi aInMsg: 0700 6869 2074 6573 74 все верно длина 7, строка hi test aOutMsg: 0700 6869 2074 6573 74 все верно длина 7, строка hi test Но результат NULL Подскажите что не так. За ранее спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2016, 21:45 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
А где у тебя null indicator в выходном буфере? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2016, 21:53 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Спасибо получилось, по смещению SizeOf(Word) + 255*4(utf8) как раз IsNull индикатор. Вопрос тогда напрашивается сам как мне узнать длину входной строки, которая объявлена в FB, или только работа идет с заранее известной длиной строки? Заранее спасибо за ответ ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2016, 22:56 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
vladimiromskВопрос тогда напрашивается сам как мне узнать длину входной строки, которая объявлена в FB, или только работа идет с заранее известной длиной строки? А про это пусть тебе идеолухи "нового API" расскажут: в какое место они спрятали описание формата буфера. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2016, 23:27 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Что то, я не понял! В общем нет информации где можно получить максимальную длину входной строки и она должно быть зерлально одинакова как в функции, так и в объявлении FB! Правильно? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2016, 23:32 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
vladimiromskПравильно? Нет, неправильно. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2016, 23:40 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
vladimiromsk, получить можно из IMessageMetadata см. метод getLength, а метаданных входного сообщения через metadata.getInputMetadata(status), где metadata: IRoutineMetadata ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2016, 23:44 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
Симонов Денис, Спасибо за ответ! Получается что это надо проверять на NewItem или Setup. Вопрос где лучше? А будут ли не битые ссылки если я запишу эти "а ля Интерфейсы"(Классы) в поля своего класс, предварительно увеличив у них количество ссылок через AddRef. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2016, 00:00 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
Коллеги, помогайте теперь мне. Скачал пример с гита Скомпилированную Udr.dll я должен положить сюда "C:\Program Files (x86)\Firebird\Firebird_3_0\plugins"? Положил. Пытаюсь объявить ф-цию: Код: sql 1. 2. 3. 4. 5. 6.
В ответ (после подтверждения транзакции) получаю: Код: plaintext 1.
т.е. udr.dll он не видит, отлуп в при поиске модуля, а не ф-ции в нем? Где я ошибаюсь? Прошу канделябром не бить, я еще новичек, официальной информации ноль. пысы: Win 7*64, firebird3*32, Delphi XE7, IBExpert ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2017, 16:36 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
seertrue, а конфигурировать кто будет? в udr_engine.conf что написано? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2017, 16:45 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
Симонов Денисseertrue, а конфигурировать кто будет? Вот об этом где на писано? Хоть комментов бы написали, я же заглядывал в этот файл. Симонов Денисв udr_engine.conf что написано? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2017, 00:00 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
seertrue, doc/README.external_routines.txt читал ? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2017, 00:45 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
seertrue, конфигурация говорит о том что ваша dll должна быть расположена в папке (fbroot)/plugins/udr Впрочем hvlad дал описание. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2017, 07:01 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
Симонов Денисseertrue, конфигурация говорит о том что ваша dll должна быть расположена в папке (fbroot)/plugins/udr Впрочем hvlad дал описание. Все работает, спасибо, ребята! Разбираюсь дальше, мне нравится продуманность структуры!!! Если бы было все документировано... ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2017, 09:18 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
С целыми и другими числами все ок. А как строки? Допустим из того же примера объявляю: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
в delphi: ... Код: pascal 1. 2. 3. 4. 5. 6. 7. 8.
... Код: pascal 1. 2. 3.
... Код: pascal 1. 2. 3. 4. 5.
в запросе: Код: plaintext 1. 2.
в str получаю NULL Что не так? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2017, 13:40 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
а там точно maloc должен быть, а не что-то иное? я не разбирался в UDR, но для UDF это не так. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2017, 13:44 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
seertrue, потому что формат для строки у тебя не правильный. Где длина строки? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2017, 14:07 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
Мимопроходящийа там точно maloc должен быть, а не что-то иное? я не разбирался в UDR, но для UDF это не так. outMessage.str:=ib_util_malloc(Length(str) + 1); это тоже не помогло ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2017, 14:30 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
Симонов Денисseertrue, потому что формат для строки у тебя не правильный. Где длина строки? Вроде все сделал по примеру, ниже код. Код: pascal 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. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109.
функция подключается, Код: plaintext 1. 2. 3. 4.
Код: plaintext 1. 2.
отладчик показывает что все поля заполняются правильно: AInMsg.Str = '12345' AOutMsg.Str = '54321' StrLen = 5 в обоих случаях но в IBExpert упорно NULL. Коллеги, помогайте. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2017, 15:02 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
А так: Код: sql 1. 2. 3. 4. 5.
? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2017, 15:09 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
Вот этот код, вас не на какие мысли не наводит? Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2017, 15:10 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
__Avenger__А так: Код: sql 1. 2. 3. 4. 5.
? Это помогло, спасибо Но база и так была создана в UTF8, посчитал что по умолчанию CHARACTER SET возьмется из базовый. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2017, 15:48 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
seertrue, ИХМО, с определением чарсета без явного указания оного в определении UDR есть косяки ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2017, 15:51 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
Симонов Денисseertrue, ИХМО, с определением чарсета без явного указания оного в определении UDR есть косяки Я вообще-то на два критерия намекал, 200 <> 255 и 4* (UTF8) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2017, 15:55 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
__Avenger__, это я просмотрел. Просто когда пробовал udr писать столкнулся с такой проблемой. Ну может сейчас уже всё норм. Это ещё на бете было. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2017, 15:59 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
__Avenger__ Я вообще-то на два критерия намекал, 200 <> 255 и 4* (UTF8) В UDR реально ли передать строку более 255 используя такой метод выделения памяти (0 .. 4 * 255 - 1)? Если нет то можно ли вообще? во всяком случае Код: plaintext 1. 2. 3. 4. 5. 6. 7.
с объявлением в XE7 [0 .. 4 * 500 - 1] у меня не прокатило. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2017, 23:11 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
seertrueс объявлением в XE7 [0 .. 4 * 500 - 1] у меня не прокатило. Delphi XE7 Код: sql 1.
- полет нормальный. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2017, 23:16 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
seertrue В UDR реально ли ... Вопрос снимается, сам дурак! ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2017, 23:19 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
А для BLOB есть пример? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2017, 23:46 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
seertrueА для BLOB есть пример? Вот тоже интересно было бы увидеть обработку блоба в UDR и на Delphi. Пробовал, как в примерах UDR-триггера на С++, но таки не победил. За неимением времени отложил. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2017, 14:56 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
Нарыл что-то похожее на пример вот тут http://www.sql.ru/forum/1224694/udr-firebird-rabota-s-blob Но там крохи инфы. Все приведенные примеры учат обезьянничать, а не мыслить! Понять принципы работы без минимального описания очень тяжело. Господа-разработчики, вы понимаете, что задумка ваша интересная, но мертвая без документации! Что делают эти строки: inBlob := Context.getAttachment(Status).openBlob(Status, context.getTransaction(Status), inMsg, 0, nil); outBlob:= Context.getAttachment(Status).createBlob(Status, context.getTransaction(Status), inMsg, 0, nil); по упомянутой ссылке? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2017, 12:59 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
Все, фантазия кончилась. Задача функции, загрузить файл в BLOB поле. На входе имя файла на выходе сам файл как BLOB. Объявляю в базе. Код: sql 1. 2. 3. 4. 5.
Все нормально. Ф-ция есть. Исходники модуля Delphi XE7 Код: pascal 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. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143.
пытаюсь выполнить (IBExpert): Код: sql 1. 2. 3.
отрабатывает без ошибок, даже что то выводит, но попытка посмотреть BLOB выдает: Код: plaintext 1. 2. 3. 4. 5. 6.
Ну естественно попытка записать в поле: Код: sql 1. 2. 3. 4.
[/SRC] приводит к тому же: Код: plaintext 1.
Где ж я накосячил? Считываемый файл на диске присутствует, в поток загружается... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2017, 16:00 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
seertrue, Ты путаешь Blob как объект и ISC_QUAD, как id блоба вот тут Код: pascal 1. 2. 3. 4. 5. 6. 7. 8.
по идее должно быть Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2017, 16:16 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
Ну и конечно не Код: pascal 1.
а Код: pascal 1.
и в конце Код: pascal 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2017, 16:29 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
seertrueИсходники модуля Delphi XE7 Потрясающий по глубине нечтения даже той жалкой документации, которая есть, бред. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2017, 16:34 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovПотрясающий по глубине нечтения даже той жалкой документации, которая есть, бред. Если это doc/README.plugins.html и это doc/README.external_routines.txt считается документацией то это я написал "войну и мир" Спросил тут про документацию: Симонов Денис: автордокументации по UDR пока нет, можно в исходниках примеры глянуть. Планирую написать статью, но позже. Ты попробуй написать, если что не будет получаться спроси здесь, поможем. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2017, 23:12 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
Там есть ещё Using_OO_API.html Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2017, 23:33 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
hvlad по идее должно быть Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
может так? Код: pascal 1.
CreateBlob просит ISC_QUADPtr ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2017, 09:41 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
hvlad AOutMsg.Size := sizeof(ISC_QUAD); // не уверен, что это поле вообще нужно [/src] Нужно! Без него получаю ошибку: Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2017, 09:55 |
|
Написание UDR
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovТам есть ещё Using_OO_API.html Вот я ламер! Уже читаю... авторAfter finishing with blob do not forget top close it: может быть очепятка и надо так? авторAfter finishing with blob do not forget to close it: ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2017, 15:35 |
|
|
start [/forum/topic.php?all=1&fid=40&tid=1561753]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
58ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
164ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 280ms |
0 / 0 |