Форум: "Базы";
Текущий архив: 2005.11.27;
Скачать: [xml.tar.bz2];
ВнизОшибка при использовании UDF Найти похожие ветки
← →
Павел © (2005-10-15 18:52) [0]вот такая библиотека:
library lib;
uses
SysUtils,Classes;
function GetServDate():integer;
begin
result:=trunc(date);
end;
exports GetServDate;
begin
end.
Вот так подключаю:
DECLARE EXTERNAL FUNCTION SERVDATE
RETURNS INTEGER BY VALUE
ENTRY_POINT "GetServDate" MODULE_NAME "D:\Base\lib.dll"
далее так вызываю:
.....
d1=servdate();
.....
при попытке использовать таким образом появляется соообщение об ошибке:
Invalid token.
invalid request BLR at offset 233.
function SERVDATE is not defined.
module name or entrypoint could not be found.
в чем дело?
← →
Павел © (2005-10-15 19:56) [1]неужели никто не подскажет?
← →
Desdechado © (2005-10-15 20:45) [2]видимо, указанный путь к DLL не является путем, где сервер его ищет
я бы писал просто имя библиотеки, даже без расширения, а саму DLL положи в подкаталог Firebird\UDF
кстати, зачем получать время сервера таким ужасным методом, для этого есть "now", CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP
← →
Павел © (2005-10-15 20:52) [3]я пробовал ложить в папку файрбёрд\удф - не помогает
а способ такой потомучто нет другого для получения численного значения даты...я по крайней мере не знаю как еще можно :)
← →
Desdechado © (2005-10-15 20:57) [4]если положил в Firebird\UDF, переопредели функцию в БД, убрав старый путь
численного - это что такое?
попробуй функцию EXTRACT
← →
Павел © (2005-10-15 21:02) [5]численное значение, это аналог типа datetime в Delphi, т.е. дата это число дней, прошедших с какого то дня(че то типа 1 января 1900 года) по день этой даты :)
← →
Павел © (2005-10-15 21:07) [6]а что за функция extract?
← →
Desdechado © (2005-10-15 21:11) [7]а что, трудно вычесть из текущей даты твое начало отсчета? вот и будет число дней
на чистом SQL можно
← →
Павел © (2005-10-15 21:29) [8]ладно, допустим, но проблему то всеравно надо решить, мне не только такая UDF нужна будет :)
← →
Desdechado © (2005-10-15 21:37) [9]на ibase.ru усть статьи, примеры и готовые библиотеки
← →
isasa © (2005-10-15 22:35) [10]Что-бы не нарваться далее на грабли, точку входа опиши
function GetServDate():integer; stdcall;
← →
DrPass © (2005-10-16 01:28) [11]
> Что-бы не нарваться далее на грабли, точку входа опиши
> function GetServDate():integer; stdcall;
function GetServDate():integer; cdecl;
Это же не WinAPI
← →
isasa © (2005-10-16 11:31) [12]DrPass © (16.10.05 01:28) [11]
А что, в Firebird все вызовы cdecl?
Стандартное соглашение в Win32 - stdcall.
Павел © (15.10.05 18:52)
В общем случае см. документацию по Firebird.
← →
DrPass © (2005-10-16 23:59) [13]
>
> isasa © (16.10.05 11:31) [12]
> А что, в Firebird все вызовы cdecl?
Ага
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2005.11.27;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.015 c