Страница 1 из 1

Не могу "достучатся" к UDF

Добавлено: 16 ноя 2006, 21:35
SenA
Уважаемые Спецы по UDF, помогите :( !

Используя образцы примеров, написал DLL (UDFColors.dll), для разбора цвета на составляющие:

unit BreakColors;

interface

implementation

function GetRed(Color:Integer):Integer ; stdcall ;
begin
result:=Color and $FFFFFF00;
end;

function GetGreen(Color:Integer):Integer ; stdcall ;
begin
result:=(Color shr 8 )and $FFFFFF00;
end;

function GetBlue(Color:Integer):Integer ; stdcall ;
begin
result:=(Color shr 16 )and $FFFFFF00;
end;

end.

Успешно ее создал и поместил в interbase_home/UDF.
Успешно скриптом объявил функции в БД:

declare external function GRed
integer
returns integer
entry_point 'GetRed' module_name 'UDFColors.dll';
declare external function GGreen
integer
returns integer
entry_point 'GetGreen' module_name 'UDFColors.dll';
declare external function GBlue
integer
returns integer
entry_point 'GetBlue' module_name 'UDFColors.dll';

Но дальше не работает! Например, при создании View:

CREATE VIEW Colors (PCOLORFACE,RED ,GREEN,BLUE )AS
select DISTINCT PCOLORFACE,
GRED (PCOLORFACE),
GGREEN (PCOLORFACE),
GBLUE (PCOLORFACE)
from POLITOP, SCENE_POLITOP
where SP_SID IS NULL AND SP_PID= PID;

Выдает:

Invalid request BLR at offset 73
function GRED is not defined
module name or entrypoint could not be found

Где "копать"?

Re: Не могу "достучатся" к UDF

Добавлено: 17 ноя 2006, 08:58
stix-s
SenA писал(а):Уважаемые Спецы по UDF, помогите :( !

Используя образцы примеров, написал DLL (UDFColors.dll), для разбора цвета на составляющие:

unit BreakColors;

interface

implementation

function GetRed(Color:Integer):Integer ; stdcall ;
begin
result:=Color and $FFFFFF00;
end;
exports
GetRed;
.............

function GetRed(var Color:Integer):Integer ; cdecl;export;
...........

http://ibase.ru/devinfo/udf_ok.htm

Добавлено: 17 ноя 2006, 10:49
SenA
Да. Лопухнулся... :oops:
Но теперь новая напасть:
Все находит и запрос -

CREATE VIEW Colors (PCOLORFACE,RED ,GREEN,BLUE )AS
select DISTINCT PCOLORFACE,
GRED (PCOLORFACE),...и т.д.
нормально отрабатывает.

Но при попытке в IBConsole посмотеть закладу :
VIEW->Colors-> Properties->Data
IBConsole "исчезает" (завершается) причем без всяких сообщений!
А при вызове из программы в Delphi - "связь с базой потеряна"

Добавлено: 17 ноя 2006, 12:03
WildSery
Всё равно ссылку не прочитал, что тебе дали.
RETURNS INTEGER BY VALUE.

Добавлено: 17 ноя 2006, 12:34
stix-s
SenA писал(а):Да. Лопухнулся... :oops:

А при вызове из программы в Delphi - "связь с базой потеряна"
просто валит твоя неправильная UDF сервер вот и усе