|
UDF в Delphi
|
|||
---|---|---|---|
#18+
Как правильно оформлять возврат строковых параметров в Interbase из UDF совершенно запутался - все строковые параметры Interbasu должны передаваться по ссылке, то есть Char(100) должен передаваться неким указателем ^ShortString; но как инициировать эту переменную в библиотеке и включать ли в интербейзе FREE IT я никак не могу понять. при подобной конфигурации: var Global:ShortString; function (var C:ShortString):PShortString; ... Result:=@Global; end; возникает ошиба 'Connection Lost' и все!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2002, 09:29 |
|
UDF в Delphi
|
|||
---|---|---|---|
#18+
Привет. Из функции нужно возвращать указатель на строку с нуль-терминатором, т.е. как в Си (тип PChar). Только память для неё надо выделять не с помощью GetMem, а ib_util_malloc, как описано в докак по IB, или с помощью malloc из msvcrt.dll. По этому поводу есть доки на ibase.ru, например http://ibase.ru/devinfo/udf.pdf ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2002, 12:38 |
|
UDF в Delphi
|
|||
---|---|---|---|
#18+
Я делаю так: 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; Все работает :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2002, 12:10 |
|
|
start [/forum/topic.php?fid=40&gotonew=1&tid=1581112]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
45ms |
get topic data: |
9ms |
get first new msg: |
7ms |
get forum data: |
3ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 145ms |
0 / 0 |