Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
14-1130859331
kaif
2005-11-01 18:35
2005.11.27
Задача с конусом


3-1129387970
Павел
2005-10-15 18:52
2005.11.27
Ошибка при использовании UDF


14-1131542528
RDA
2005-11-09 16:22
2005.11.27
Компьютерная барахолка в Киеве


3-1129270281
art_corp
2005-10-14 10:11
2005.11.27
MySQL + 3х уровневая архитектрура


14-1131181753
Lisa
2005-11-05 12:09
2005.11.27
Помогите с DXF





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский