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

UDF и возвращаемые значения

Добавлено: 09 ноя 2004, 14:54
relikt
Есть траблы, из udf функции возвращается строка с кучей пробелов в конце до объявленной длинны, как убрать пробелы?

function GetObjectValue(var BLOb: TBLOb; KeyWord: PChar): PChar; cdecl; export;

В хранимой процедуре:

select key_name,getobjectvalue(val_blob,'Item1') from objects where id=:PARENT_ID into :var1, :var2;

P.S. символ '_' смотреть как пробел, форум урезает пробелы.

Добавлено: 09 ноя 2004, 16:07
kdv
текст урезал, потому что никакого отношения к проблеме он не имеет. у UDF надо параметры кроме блоб декларировать как cstring, а не как char, только и всего.
Кстати, декларацию udf ты и не привел.

Добавлено: 09 ноя 2004, 16:27
relikt
DECLARE EXTERNAL FUNCTION GETOBJECTVALUE
BLOB,
CSTRING(1000)
RETURNS CSTRING(1000) FREE_IT
ENTRY_POINT 'GetObjectValue' MODULE_NAME 'BlobSearch'

Добавлено: 09 ноя 2004, 17:08
kdv
гм, подозрительно это. и зря я, наверное, текст udf удалил. :) Особенно если ты входной параметр как выходной (pchar) передаешь. у тебя ведь на вход подается как раз char по умолчанию getobjectvalue(val_blob, 'Item1'), а это якобы char....

да, и чем не устраивает библа XPath? Смотри тут
http://www.ibase.ru/devinfo/xmldb.htm

это прямо то что тебе надо, только уже готовое.

Добавлено: 09 ноя 2004, 17:38
relikt
Делано из примеров.
Использовать то что предлагается, это мне скока переделовать базу, ей прст, да и тем более у меня нечто другое...

Добавлено: 09 ноя 2004, 20:09
kdv
кто тебя базу заставляет переделывать... Ты саму UDF xpath смотрел? Чем она там сильно от твоей отличается? Взял бы ее за образец, и все.

Добавлено: 10 ноя 2004, 13:35
relikt
Давно это было....., конечно смотрел, и я как бы с udf не первый день, с ib 6.0 все ок было, а здесь чего то некак, если тока сделать возвращаемый параметр последним, а память будет выделять сам IB., незнаю, надо покапатся, вроде все правильно делаю.