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

ЧАстые Вопросы и Ответы

Модераторы: kdv, CyberMax

Ответить
SenA
Сообщения: 3
Зарегистрирован: 16 ноя 2006, 21:25

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

Сообщение SenA » 16 ноя 2006, 21:35

Уважаемые Спецы по 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

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

stix-s
Заслуженный разработчик
Сообщения: 557
Зарегистрирован: 13 дек 2005, 11:52

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

Сообщение stix-s » 17 ноя 2006, 08:58

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

SenA
Сообщения: 3
Зарегистрирован: 16 ноя 2006, 21:25

Сообщение SenA » 17 ноя 2006, 10:49

Да. Лопухнулся... :oops:
Но теперь новая напасть:
Все находит и запрос -

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

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

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 17 ноя 2006, 12:03

Всё равно ссылку не прочитал, что тебе дали.
RETURNS INTEGER BY VALUE.

stix-s
Заслуженный разработчик
Сообщения: 557
Зарегистрирован: 13 дек 2005, 11:52

Сообщение stix-s » 17 ноя 2006, 12:34

SenA писал(а):Да. Лопухнулся... :oops:

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

Ответить