Форум: "Базы";
Текущий архив: 2002.10.10;
Скачать: [xml.tar.bz2];
ВнизНе работает UDF Найти похожие ветки
← →
i (2002-09-19 10:15) [0]Создал DLL:
library MyUDF;
uses
SysUtils,
Classes;
{$R *.res}
function DelSubStr(Str, SubStr: PChar): PChar; cdecl; export;
var
S : string;
begin
Result := nil;
StrCopy(Result, Str);
if StrPos(Result, SubStr) <> nil then begin
S := string(Result);
Delete(S, Pos(string(SubStr), S), StrLen(SubStr));
Result := PChar(S);
end;
end;
exports
DelSubStr;
begin
end.
Положил DLL в ..\InterBase\bin\
Объявил ее в IB:
DECLARE EXTERNAL FUNCTION DELSUBSTR
VARCHAR(100),
VARCHAR(100)
RETURNS CSTRING(100) FREE_IT
ENTRY_POINT "DelSubStr" MODULE_NAME "MyUDF";
Деляю запрос:
update operation set ind_priv = delsubstr(ind_priv, user)
Выдается сообщение: Unsuccessful execution caused by system error that does not preclude successful execution of subsequent statements. connection lost to database.
В ЧЕМ ТУТ ОШИБКА?????????????
Помогите пожалуйста, уважаемые мастера.
← →
Johnmen (2002-09-19 11:05) [1]Для начала - DLL должна лежать в ..\InterBase\Udf
← →
i (2002-09-19 11:39) [2]Пробовал и туда
← →
Desdechado (2002-09-19 19:24) [3]ошибка в том, что при работе со строками используется борландовский менеджер памяти. А ИБ скомпилирован на MS C++. Отсюда конфликт и завал сервера. Используй malloc из msvcrt.dll для выделения памяти под новую строку.
и не VARCHAR(100) а CSTRING(100)
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.10.10;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.008 c