Главная страница
    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.014 c
14-1131363466
DD
2005-11-07 14:37
2005.11.27
Компоненты, раб-щие с арх. RAR и ZIP


1-1131006973
Ugrael
2005-11-03 11:36
2005.11.27
dbgrid и defaultdrawing


3-1129187553
WondeRu
2005-10-13 11:12
2005.11.27
Update с использованием двух таблиц


2-1131611315
Рафик
2005-11-10 11:28
2005.11.27
Вопрос по Rave Report


1-1130844137
ai3000
2005-11-01 14:22
2005.11.27
Мега-БПЛ





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский