|
UDF-проблема
|
|||
---|---|---|---|
#18+
Вот функция в библиотеке (DLL) function strcatsi(pS :PChar;cnt:PChar):PChar;stdcall; var s,s1,s2:String; begin SetString(s1,pS,StrLen(pS)); SetString(s2,cnt,StrLen(cnt)); s:=Trim(s1)+Trim(s2); result:=PChar(s); end; Вот ее объявление в скрипте DECLARE EXTERNAL FUNCTION f_strcatsi CSTRING(80),CSTRING(25) RETURNS CSTRING(100) FREE_IT ENTRY_POINT "strcatsi" MODULE_NAME "Apart"; Вот ее вызов из скрипта sToUDF=f_strcatsi(sToPass,CAST(lRecCountInPHistory AS VARCHAR(25))); Все это работает , но: Мне нужно 2-м параметром иметь тип INTEGER , но в этом случае в DLL передается всякий мусор. Вот и приходится заниматься преобразованием lRecCountInPHistory туда и обратно. Как быть ? (про || не надо) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2001, 02:15 |
|
UDF-проблема
|
|||
---|---|---|---|
#18+
Хороший вопрос, но спроси лучше на forum.cps.ru или в конференции в fido7 fido7.su.dbms.interbase (например через www.talk.ru) а тут тебе врядли кто ответит ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2001, 06:59 |
|
UDF-проблема
|
|||
---|---|---|---|
#18+
Параметры в UDF передаются по ссылке, поэтому перед объявлением параметра должно стоять var. При объявлении функции надо использовать ключевые слова cdecl и export: function strcatsi(var pS :PChar; var cnt: Integer):PChar; cdecl; export; ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2001, 16:55 |
|
|
start [/forum/topic.php?fid=40&fpage=540&tid=1581371]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
49ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
others: | 253ms |
total: | 384ms |
0 / 0 |