powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / UDF в Delphi
3 сообщений из 3, страница 1 из 1
UDF в Delphi
    #32061413
FAGIM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как правильно оформлять возврат строковых параметров в Interbase из UDF
совершенно запутался - все строковые параметры Interbasu должны передаваться по ссылке, то есть Char(100) должен передаваться неким указателем ^ShortString; но как инициировать эту переменную в библиотеке и включать ли в интербейзе FREE IT я никак не могу понять.

при подобной конфигурации:
var
Global:ShortString;

function (var C:ShortString):PShortString;
...
Result:=@Global;
end;

возникает ошиба 'Connection Lost' и все!!!
...
Рейтинг: 0 / 0
UDF в Delphi
    #32061502
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет. Из функции нужно возвращать указатель на строку с нуль-терминатором, т.е. как в Си (тип PChar). Только память для неё надо выделять не с помощью GetMem, а ib_util_malloc, как описано в докак по IB, или с помощью malloc из msvcrt.dll.
По этому поводу есть доки на ibase.ru, например http://ibase.ru/devinfo/udf.pdf
...
Рейтинг: 0 / 0
UDF в Delphi
    #32061864
Babrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я делаю так:

DECLARE EXTERNAL FUNCTION RUSUPPERCASE
CSTRING (255)
RETURNS CSTRING (255) FREE_IT
ENTRY_POINT 'RusUpperCase' MODULE_NAME 'Firms_Un.dll';

function RusUpperCase(FirstString:PChar):PChar;stdcall;
var
Str:String;
begin

Str:=AnsiUppercase(FirstString);
Result:=PChar(Str);
end;

Все работает :-)
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / UDF в Delphi
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]