Здравстуйте, у меня довольно интересная проблема. Пишу приложение с использованием двух пакетов bpl и CУБД firebird. Использую FIBPlus 7 при работе с БД. Мне необходимо передать параметры подключения к БД из главной формы в форму Module_form, которая создается при подключении пакета. Я реализую это так:
Функция загрузки пакета Module.bpl:
Type TgrSimpleParam = class(TObject)
public
DB_Handle:TISC_DB_HANDLE;
Owner:TComponent;
end;
function DoFunctionFromPackage(AParameter:TObject;const Bpl:array of string):variant;
const ModulePack :array [1..2] of string=('Module.bpl','View_Module1');
function DoFunctionFromPackage(AParameter:TObject;const Bpl:array of string):variant;
var
HandlePack: HModule;
MDIFUNC :function(AParameter:TObject):Variant;stdcall;
begin
Result:=NULL;
HandlePack:=GetModuleHandle(PChar(Bpl[0]));
if HandlePack<32
then
begin
HandlePack := LoadPackage(ExtractFilePath(Application.ExeName)+Bpl[0]);
ShowMessage('LOAD');
if HandlePack > 0 then
begin
@MDIFUNC:=GetProcAddress(HandlePack,PChar(Bpl[1]));
if @MDIFUNC<>nil
then Result:=MDIFUNC(AParameter);
end
else
begin
ShowMessage('Не удается загрузить пакет'+#13+Bpl[0]);
Result:=NULL;
end;
end;
end;
Вот вызов ее в главной форме:
procedure TFormadd2.cxButton3Click(Sender: TObject);
var Parameter:TgrSimpleParam;
begin
Parameter := TgrSimpleParam.Create;
Parameter.DB_Handle := DataModule1.Database.Handle;
Parameter.Owner := self;
DoFunctionFromPackage(Parameter,ModulePack);
Parameter.Destroy;
end;
Далее при создании формы в пакете Module я передаю параметры подключения к БД:
constructor TForm_list.Create(AOwner:TComponent;Db_Handle:TISC_DB_HANDLE);
begin
inherited Create(AOwner);
DB.Handle:=Db_Handle;
Transaction.StartTransaction;
end;
Но при помещении на форму Form_list объекта типа pFIBDataSet (без него не обойтись) дебаггер выдает ошибку:
Project test_main.exe raised exception class Exception with message 'Application is not licensed to use this feature'. Process stopped;
а приложение:Access violation at address 01D43B9E in module 'FIBPlus7.bpl'. Read of address 00000008.
При этом без компонента pFIBDataSet все работает нормально. Подскажите, в чем проблема? Любые варианты решений, найденные на форумах (пробовал все вплоть до создания в пакете DataModule, и перегружая конструктор create создавал необходимые компоненты) приводят к той же ошибке Возможно, если есть какие либо другие варианты подключения к БД в новой форме, буду благодарен за их предоставление. Заранее спасибо.