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

IBX, FIBPlus, UIB, ADO, .Net и прочее-прочее-прочее, в общем все, что относится к созданию приложений, работающих с InterBase, Firebird и Yaffil - клиент-серверных, трехзвенных, консольных и т.п.

Модератор: kdv

Ответить
Spa_2002
Сообщения: 28
Зарегистрирован: 13 май 2005, 15:47

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

Сообщение Spa_2002 » 27 янв 2006, 14:44

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

Merlin
Динозавр IB/FB
Сообщения: 1502
Зарегистрирован: 27 окт 2004, 11:44

Сообщение Merlin » 27 янв 2006, 14:48

Langref.pdf, User Defined Functions

Spa_2002
Сообщения: 28
Зарегистрирован: 13 май 2005, 15:47

Сообщение Spa_2002 » 30 янв 2006, 13:10

да, кто ищет , тот всегда найдет. На основе книжки Мир 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'
пробуем. работает.

Ответить