Форум: "Базы";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];
ВнизUDF для Firebird со строчными параметрами Найти похожие ветки
← →
DSKalugin © (2004-12-17 19:49) [0]
library my_udf;
uses StrUtils,SysUtils;
function ClearSkladCod(var vsCod: PChar):PChar; stdcall; export;
const ClearChars=["0".."9","A".."Z"];
var ns:pchar;
t:ShortString;
i,j:Byte;
begin
t:="";
getmem(ns,30);
StrCopy(ns,AnsiStrUpper(vsCod));
j:=Length(ns);
for i:=0 to j-1 do
if (ns[i] in ClearChars)
then t:=t+ns[i];
freemem(ns);
StrPCopy(Result,t);
end;
exports
ClearSkladCod;
begin
IsMultiThread:=True;
end.
-----------------------------------
DECLARE EXTERNAL FUNCTION ClearSkladCod
CSTRING(30)
RETURNS CSTRING(30) FREE_IT
ENTRY_POINT "ClearSkladCod" MODULE_NAME "my_udf";
при вызове в IBExpert выдает ошибку AV и разрывает соединение
В чем ошибка?
← →
Johnmen © (2004-12-17 23:08) [1]Глянь здесь
http://www.realcoding.net/part.php?id=1579
и см. на ibase.ru, там много материала...
← →
jack128 © (2004-12-18 00:21) [2]предирка к статье. Вообще говоря malloc нужно импортировать из ib_util.dll/функция ib_util_malloc
← →
DSKalugin © (2004-12-18 16:58) [3]2 Johnmen
Спасибо за линк, я интуитивно сам понимал, что надо как-то выделять память под результат. Но не знал как. На "ибасе" все перерыл перед тем как сюда написать
2 jack128
ок буду пробовать ib_util_malloc
а синтаксис какой ?
← →
DrPass © (2004-12-18 20:44) [4]А почему stdcall? IB вроде как использует соглашение cdecl
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.063 c