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

Не бейте ногами, снова о UDF

Добавлено: 27 янв 2006, 14:44
Spa_2002
День добрый . :oops:
IB 6.5 Проблема проста как день: нужно в запросе в where выделять подстроку из поля . Где раздобыть dll содержащую нужную функцию и ОПИСАНИЕ конкретно ее(нужной функции из dll) подключения? В каталоге UDF при установке IB лежит какая-то ib_udf.dll , но что в ней содержится, как с этим работать , пока не нашел.
Помогите , кто чем может...?

Добавлено: 27 янв 2006, 14:48
Merlin
Langref.pdf, User Defined Functions

Добавлено: 30 янв 2006, 13:10
Spa_2002
да, кто ищет , тот всегда найдет. На основе книжки Мир IB 3Ed. и статейки UDF за 21 минуту.
создаем в Delphi проект - новую DLL,внутри незамысловатый текст

Код: Выделить всё

library UDF2;

uses
  SysUtils;
  function malloc(size: integer) : Pointer; cdecl; external 'msvcrt.dll'

function SStr(str1: PChar; var s1: integer; var s2: integer):PChar; cdecl; export;

var Tmp: string;
begin
  Tmp:=Copy(str1, s1, s2);
  Result:=malloc(length(Tmp)+1);
  StrPCopy(Result, Tmp);
end;

exports
SStr;

begin
end.
компилируем , помещаем UDF2.dll в каталог UDF туда , где установлена IB 6

в IB декларируем нашу функцию

Код: Выделить всё

DECLARE EXTERNAL FUNCTION SSTR
    CSTRING(254),
    INTEGER,
    INTEGER
RETURNS CSTRING(254) FREE_IT
ENTRY_POINT 'SStr' MODULE_NAME 'UDF2.dll'
пробуем. работает.