|
Написание 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 |
|
|
start [/forum/topic.php?fid=40&msg=39380955&tid=1561753]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
61ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
others: | 287ms |
total: | 452ms |
0 / 0 |