Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Firebird, InterBase Новый топик    Ответить
 Возврат NULL из IDF  [new]
Janex
Member

Откуда: Латвия
Сообщений: 1106
Привет всем.
Пушу UDF которая возврашает DOUBLE PRECISION.
По простому всё ясно, но надо чтоб умела отдать NULL на выходе.
Прогуглил, что ето делается через BY DESCRIPTOR.
Ок, что то вроде сооброзил:

TDSC = Packed Record
  dsc_dtype     :Byte;
  dsc_scale     :Byte;
  dsc_length    :Word;
  dsc_sub_type  :Word;
  dsc_flags     :Word;
  dsc_address   :Pointer;
End;
PDSC = ^TDSC;

Function __ExtractDouble(AData :PAnsiChar): PDSC; CDecl; Export;
Var d :double;
Begin
  Result := Nil; // тут NULL возврошает

  d := 123.456;
  Result := d; // вот как тут мои double в result запыхнуть ???

End;


Кто в курсе? Негде такои пример ненашёл :(

WBR
Janex
24 сен 19, 20:08    [21978420]     Ответить | Цитировать Сообщить модератору
 Re: Возврат NULL из IDF  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 10084
Janex,

http://www.ibphoenix.com/files/Writing-External-Functions.pdf
24 сен 19, 21:10    [21978442]     Ответить | Цитировать Сообщить модератору
 Re: Возврат NULL из IDF  [new]
Janex
Member

Откуда: Латвия
Сообщений: 1106
Ну такс ...
С Double Precision разобрался, и числа возврашает, и NULL, всё работает.
Шас тож самое надо с VARCHAR, но хрену ... делаю идентично по тои же схеме но неработает :(
Где грабли ?

UDF:
DECLARE EXTERNAL FUNCTION XD_EXTRACTSTRINGPART
    CSTRING(256),
    CSTRING(256) BY DESCRIPTOR
RETURNS PARAMETER 2
ENTRY_POINT '__ExtractStringPart' MODULE_NAME 'xdUDF';


Дельфа:
Function __ExtractStringPart(AString :PAnsiChar; AParam :PDSC): PDSC; CDecl; Export;
Var S :String;
Begin
  S := 'qaqa';
  AParam.dsc_address := @S;
  Result := AParam;
End;

и возврашает пустую строку ...
Где лоханулся ???
25 сен 19, 20:23    [21979263]     Ответить | Цитировать Сообщить модератору
 Re: Возврат NULL из IDF  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 48618

Janex
Где лоханулся ???

Практически везде. Просто обломись, забей и переходи к UDR.

Posted via ActualForum NNTP Server 1.5

25 сен 19, 20:56    [21979281]     Ответить | Цитировать Сообщить модератору
 Re: Возврат NULL из IDF  [new]
Janex
Member

Откуда: Латвия
Сообщений: 1106
Dimitry Sibiryakov
Janex
Где лоханулся ???

Практически везде. Просто обломись, забей и переходи к UDR.

:) :) :)
Ето мне на старои 2.5 нужно, хотя вопрос сниматся, нашёл
как для varchar NULL передать на выходе...

UDR ? ... Да, UDR уже давно в природе, но таки руки недошли попробовать как оно на вкус ...

WBR
Janex
25 сен 19, 21:42    [21979309]     Ответить | Цитировать Сообщить модератору
Все форумы / Firebird, InterBase Ответить