![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Ошибка при использовании UDF [D7, FireBird 1.5]
Павел © (2005-10-15 18:52:00)вот такая библиотека:
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.
в чем дело?
DrPass (2005-10-16 23:59:00) [1]
>
> isasa © (16.10.05 11:31) [12]
> А что, в Firebird все вызовы cdecl?
Ага
isasa (2005-10-16 11:31:00) [2]DrPass © (16.10.05 01:28) [11]
А что, в Firebird все вызовы cdecl?
Стандартное соглашение в Win32 - stdcall.
Павел © (15.10.05 18:52)
В общем случае см. документацию по Firebird.
DrPass (2005-10-16 01:28:00) [3]
> Что-бы не нарваться далее на грабли, точку входа опиши
> function GetServDate():integer; stdcall;
function GetServDate():integer; cdecl;
Это же не WinAPI
isasa (2005-10-15 22:35:00) [4]Что-бы не нарваться далее на грабли, точку входа опиши
function GetServDate():integer; stdcall;
Desdechado (2005-10-15 21:37:00) [5]на ibase.ru усть статьи, примеры и готовые библиотеки
Павел (2005-10-15 21:29:00) [6]ладно, допустим, но проблему то всеравно надо решить, мне не только такая UDF нужна будет :)
Desdechado (2005-10-15 21:11:00) [7]а что, трудно вычесть из текущей даты твое начало отсчета? вот и будет число дней
на чистом SQL можно
Павел (2005-10-15 21:07:00) [8]а что за функция extract?
Павел (2005-10-15 21:02:00) [9]численное значение, это аналог типа datetime в Delphi, т.е. дата это число дней, прошедших с какого то дня(че то типа 1 января 1900 года) по день этой даты :)
Desdechado (2005-10-15 20:57:00) [10]если положил в Firebird\UDF, переопредели функцию в БД, убрав старый путь
численного - это что такое?
попробуй функцию EXTRACT
Павел (2005-10-15 20:52:00) [11]я пробовал ложить в папку файрбёрд\удф - не помогает
а способ такой потомучто нет другого для получения численного значения даты...я по крайней мере не знаю как еще можно :)
Desdechado (2005-10-15 20:45:00) [12]видимо, указанный путь к DLL не является путем, где сервер его ищет
я бы писал просто имя библиотеки, даже без расширения, а саму DLL положи в подкаталог Firebird\UDF
кстати, зачем получать время сервера таким ужасным методом, для этого есть 'now', CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP
Павел (2005-10-15 19:56:00) [13]неужели никто не подскажет?