Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.05.2012, 15:15   #1
-COREY-
Пользователь
 
Аватар для -COREY-
 
Регистрация: 19.04.2009
Сообщений: 50
По умолчанию Firebird.Не могу подключить UDF.

Уважаемые программисты, помогите разобраться!
Написал 3 UDF
Код:
library UDFs;

uses
  funtions in 'funtions.pas';

exports
IncomeTax index 1 name 'INCOMETAX',
nds index 2 name 'NDS',
StringtoFlt index 3 name 'STRINGTOFLT';

end.

unit funtions;

interface
uses SysUtils, Classes;

type
  float = single;

function IncomeTax(salary:float): float; cdecl;
function nds(price:float): float; cdecl;
function StringtoFlt(str:pchar): float; cdecl;


implementation

function IncomeTax(salary:float): float; cdecl; export;
begin
  result:=salary * 0.13;
end;

function nds(price:float): float; cdecl; export;
var nalog: float;
begin
  nalog:= price * 0.18;
  result:= price + nalog;
end;

function StringtoFlt(str:pchar): float; cdecl; export;
begin
    result:=StrToFloat(strpas(str));
end;

end.
Откомпилировалось без ошибок, собралась dll
Кинул ее в папку UDF в директории, куда установился firebird.

Функции зарегистрировал в IBExpert
Код:
DECLARE EXTERNAL FUNCTION INCOMETAX
    FLOAT
RETURNS FLOAT BY VALUE
ENTRY_POINT 'INCOMETAX' MODULE_NAME 'UDFs';

DECLARE EXTERNAL FUNCTION NDS
    FLOAT
RETURNS FLOAT BY VALUE
ENTRY_POINT 'nds' MODULE_NAME 'UDFs';

DECLARE EXTERNAL FUNCTION STRINGTOFLOAT
    CSTRING(15)
RETURNS FLOAT BY VALUE
ENTRY_POINT 'STRINGTOFLOAT' MODULE_NAME 'UDFs';
В IBExpert в SQL Editor формирую запрос

Код:
SELECT
NAME,
SALARY,
INCOMETAX(SALARY)
FROM POSITIONS;
IBExpert выдает

Код:
can't format message 13:896 -- message file C:\Windows\firebird.msg not found.
invalid request BLR at offset 70.
function INCOMETAX is not defined.
module name or entrypoint could not be found.
как быть, подскажите, пожалуйста?
Конфиги Firebird стоят по дефолту,ничего не правилось,версия 2.5.1

Последний раз редактировалось -COREY-; 08.05.2012 в 15:38.
-COREY- вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как подключить Firebird? Marsel737 БД в Delphi 10 17.11.2010 09:33
Не могу подключить библиотеки Володя22 Общие вопросы C/C++ 10 15.03.2010 18:32
Ошибка при декларировании функции в Firebird из UDF shurik_7866 БД в Delphi 1 30.07.2007 08:55
как подключить udf библиотеку к базе данных shurik_7866 БД в Delphi 0 06.07.2007 00:04