powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / UDF на VC6
3 сообщений из 3, страница 1 из 1
UDF на VC6
    #32139165
Syleiman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ребят, привет!
Есть небольшая проблемка. Начал писать UDF (до этого для Interbase не писал их вообще) на VC6. Для Interbase 6.

Листинг простейший:

#include "stdafx.h"
#include <ibase.h>

extern "C" __declspec(dllexport) int UDFTEST(int&);
//---------------------------------------------------------------
BOOL APIENTRY DllMain( HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved)
{
return TRUE;
}
//------------------------------------------------------------------------
int UDFTEST(int& k)
{
return 1; // Простейший тест - поставили всегда возвращает 1
}

Никакие библиотеки кроме стандартных не подключаются.
Функция устанавливается:
declare external function udftest integer
returns integer entry_point 'UDFTEST' module_name 'udf_test.dll';

При выполнении в запросе (запрос выполнялся в Interactive SQL)
select * from toures where udftest(nigths)=1;
выдаёт табличку с ошибкой "сonnection lost to database".
При этом восстановить соединение никак не удаётся.

Ребят, кто-нибудь с такой проблемой сталкивался? Что делать?
И ещё. Быть может у кого-нибудь листинги есть по работе c BLOB через UDF на VC6.
Если поделитесь - очень обяжете.
...
Рейтинг: 0 / 0
UDF на VC6
    #32139189
zDIV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть неплохая статья http://www.ibase.ru/devinfo/udf_ok.htm, правда не на VC, но с блобами немного растолковано.
...
Рейтинг: 0 / 0
UDF на VC6
    #32139205
Syleiman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Разобрался, почему виснет.
Всё дело в том, что результат должен возвращаться как ссылка на глобальную переменную. Вот так:

#include "stdafx.h"
#include <ibase.h>

extern "C" __declspec(dllexport) int& UDFTEST(int);
int iResult;
//----------------------------------------------------------------------------
BOOL APIENTRY DllMain( HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved)
{
return TRUE;
}
//----------------------------------------------------------------------------
int& UDFTEST(int k)
{
iResult=1;
return iResult;
}

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


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