Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.01.09;
Скачать: CL | DM;

Вниз

UDF   Найти похожие ветки 

 
DmitryB   (2002-12-17 08:51) [0]

Понадобилась функция конвертации varchar в numeric.
Вот текст dll:
library my_util;
uses
SysUtils;
{$R *.res}

function StrToNum(var InStr:PChar):Currency;cdecl;export;
begin
Result:=StrToCurr(InStr);
end;

exports StrToNum;

begin
end.

Dll помещается в каталог ib\bin
Далее в IBExpert описываю функцию:

DECLARE EXTERNAL FUNCTION STRTONUM
CSTRING(80)
RETURNS NUMERIC(18,2) BY VALUE
ENTRY_POINT "StrToNum" MODULE_NAME "my_util.dll";

Функция успешно регистрируется, но когда к ней обращаешься из хран. процедуры или из запроса, выдается следующее:

Invalid token.
Invalid request BLR at offset 43.
functiom STRTONUM is not defined.
module name or entrypoint could not be found.

Делал возвращение результата также и по ссылке, менял ctring на varchar, делал все названия функции в одинаковом регистре - результат один, вышеприведенный.

(поставляемая с ib готовая udf работает - ок!)

Как бы все это привести к рабочему состоянию ?


 
Alexandr ©   (2002-12-17 08:55) [1]

1) сервер перезапусти.
2) В IB6 функции должны быть в каталоге UDF по-моему...
3) а почему бы тебе готовую не взять?


 
DmitryB   (2002-12-17 09:07) [2]

>а почему бы тебе готовую не взять?
А какая есть готовая функция ?

Если речь о готовой UDF, то ее исходник к сожалению на С++.


 
DmitryB   (2002-12-17 09:21) [3]

>Если речь о готовой UDF, то ее исходник к сожалению на С++.
То есть не хотелось бы эксперементировать с С-ным кодом.


 
Reindeer Moss Eater   (2002-12-17 09:24) [4]

Тебе же по русски сказано было о причине неудачи:
module name or entrypoint could not be found.


 
DmitryB   (2002-12-17 09:35) [5]

>Reindeer Moss Eater
Читать умею, вот если подскажете дельное, - спасибо.


 
Alexandr ©   (2002-12-17 09:39) [6]

где ж ты читать умеешь, если я тебе 3 пункта привел, а ты только http://www.ibase.ru/develop.htm
http://www.ibase.ru/d_udf.htm


 
Digitman ©   (2002-12-17 09:42) [7]

Ты как UDF-декларацию выполняешь ? В виз. UDF-редакторе или "вручную" текст скрипта (того что ты привел) запускаешь ?

Если в виз.UDF-редакторе, то - да, есть там такая "плюха". Никак ее Хвастунов не хочет довести до ума)

При указании имени UDF-ф-ции (по которому ты будешь обращаться к ней из SP/триггеров) в виз.редакторе вот в таком вот виде StrToNum IBExpert сформирует вот такое предложение :

DECLARE EXTERNAL FUNCTION "StrToNum"
CSTRING(80)
RETURNS NUMERIC(18,2) BY VALUE
ENTRY_POINT "StrToNum" MODULE_NAME "my_util.dll";

Обрати внимание на кавычки - "StrToNum" !
В рез-те сервер запишет имя ф-ции в таблицу RDB$FUNCTIONS именно в таком виде, в каком ты ввел это имя (as is, т.е. с учетом оригинального регистра символов).

А искать ф-цию при последующем обращении к ней сервер будет в этой таблице
- по имени в верх.регистре (если обращаться к ф-ции StrToNum(..))
- либо по имени с оригинальными регистрами (если обращаться к ф-ции "StrToNum "(..))

В первом случае сервер не найдет ф-ции (ибо она регистрировалась в кавычках и хранится в ориг.регистре) и вернет ту самую ошибку, что ты и получаешь.

Во втором случае ошибки не будет (ибо поиск в таблице осущесчтвляется с учетом регистра, т.е. без предв.преобразования имени в UpperCase)

Вот такая вот байда))



 
DmitryB   (2002-12-17 10:06) [8]

Всем большое спасибо за информацию. Действительно дело в кавычках. :-)


 
Digitman ©   (2002-12-17 10:18) [9]


> DmitryB


Еще один привет Хвастунову Саше))))))... Я уж как-то раз передавал ему на эту тему свое "фи" .. не отреагировал, к сожалению) ... а дело было еще во времена v2.5.0.1, кажись))



Страницы: 1 вся ветка

Текущий архив: 2003.01.09;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.014 c
4-25136
Stainer
2002-11-19 16:47
2003.01.09
список процессов с полными путями


8-24986
BOA_KAA
2002-09-23 14:34
2003.01.09
Опять беда со скроллингом в TImage


14-25020
Ketmar
2002-12-19 12:37
2003.01.09
господа, никто не встречал реализацию LISP а на OP?


14-25073
gsu
2002-12-20 18:56
2003.01.09
А зачем форум тормозит


1-24891
Шурик Ш
2002-12-25 17:08
2003.01.09
Подскажите, пожалуйста, по методу StringGrid.MouseToCell