Rambler's Top100
"Knowledge itself is power"
F.Bacon
Поиск | Карта сайта | Помощь | О проекте | ТТХ  
 Круглый стол
  
Правила КС
>> Настройки

Фильтр вопросов
>> Новые вопросы
отслеживать по
>> Новые ответы

Избранное

Страница вопросов
Поиск по КС


Специальные проекты:
>> К л ю к в а
>> Г о л о в о л о м к и

Вопрос №

Задать вопрос
Off-topic вопросы

Помощь

 
 К н и г и
 
Книжная полка
 
 
Библиотека
 
  
  
 


Поиск
 
Поиск по КС
Поиск в статьях
Яndex© + Google©
Поиск книг

 
  
Тематический каталог
Все манускрипты

 
  
Карта VCL
ОШИБКИ
Сообщения системы

 
Форумы
 
Круглый стол
Новые вопросы

 
  
Базарная площадь
Городская площадь

 
   
С Л С

 
Летопись
 
Королевские Хроники
Рыцарский Зал
Глас народа!

 
  
ТТХ
Конкурсы
Королевская клюква

 
Разделы
 
Hello, World!
Лицей

Квинтана

 
  
Сокровищница
Подземелье Магов
Подводные камни
Свитки

 
  
Школа ОБЕРОНА

 
  
Арсенальная башня
Фолианты
Полигон

 
  
Книга Песка
Дальние земли

 
  
АРХИВЫ

 
 

Сейчас на сайте присутствуют:
 
  
 
Во Флориде и в Королевстве сейчас  16:44[Войти] | [Зарегистрироваться]
Ответ на вопрос № 73954

Вопросы с аналогичными сообщениями об ошибках:
  • Application is not licensed to use this feature (6)

    08-11-2009 15:21
    Здравстуйте, у меня довольно интересная проблема. Пишу приложение с использованием двух пакетов 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 создавал необходимые компоненты) приводят к той же ошибке Возможно, если есть какие либо другие варианты подключения к БД в новой форме, буду благодарен за их предоставление. Заранее спасибо.

    [+] Добавить в избранные вопросы

    Отслеживать ответы на этот вопрос по RSS

    Ответы:


    Уважаемые авторы вопросов! Большая просьба сообщить о результатах решения проблемы на этой странице.
    Иначе, следящие за обсуждением, возможно имеющие аналогичные проблемы, не получают ясного представления об их решении. А авторы ответов не получают обратной связи. Что можно расценивать, как проявление неуважения к отвечающим от автора вопроса.

    12-11-2009 16:30 | Сообщение от автора вопроса
    Проблему решил благодаря найденным вопросам с похожей ситуацией. Возможно, как я понял, это баг делфи, но в общем обязательно необходимо, чтобы пакеты BPL были runtime-only. В свойствах основного проекта главной формы необходимо указать их в списке рантайм пакетов. Спасибо всем участникам обсуждений на форуме за высокоинформативные вопросы и ответы.

    09-11-2009 05:05 | Сообщение от автора вопроса

    constructor TForm_list.Create(AOwner:TComponent;Db_Handle:TISC_DB_HANDLE);
    begin
    inherited Create(AOwner);
    DB.Handle:=Db_Handle;
    Transaction.StartTransaction;// Вот на этой строке ошибка
    end;


    На всякий случай, я кинул архив с полными исходниками на файлообменник. Вот ссылка:
    http://www.sharemania.ru/0110200

    08-11-2009 17:17 | Вопрос к автору: запрос дополнительной информации
    ошибка появляется при вызове конструктора создания формы

    Код в студию! И указать на какой строке возникает ошибка.

    08-11-2009 17:01 | Сообщение от автора вопроса
    По поводу замечаний, исправлю. ошибка появляется при вызове конструктора создания формы, в случае даже если я просто кидаю на форму объект ИМЕННО типа pFIBDataSet (!), не говоря уже об операциях с ним.
    В случае, если в конструкторе создания исключительно эти две строки:

    DB.Handle:=Db_Handle;
    Transaction.StartTransaction;


    ошибки не возникает. При этом на форме соответсвенно присутсвуют компненты pFIBDAtaBase и pFIBTransaction и форма создается корректно.

    08-11-2009 15:46 | Вопрос к автору: запрос дополнительной информации
    На каких конкретно строках кода выдаются ошибки?

    Мелкие замечания по коду:
    1. уберите везде stdcall, использовать его с пакетами совершенно бессмысленно.
    2. Parameter.Destroy; заменить на Parameter.Free

    Добавьте свое cообщение

    Вашe имя:  [Войти]
    Ваш адрес (e-mail):На Королевстве все адреса защищаются от спам-роботов
    контрольный вопрос:
    Кто съел Красную шапочку?
    в качестве ответа на вопрос или загадку следует давать только одно слово в именительном падеже и именно в такой форме, как оно используется в оригинале.
    Надоело отвечать на странные вопросы? Зарегистрируйтесь на сайте.
    Тип сообщения:
    Текст:
    Жирный шрифт  Наклонный шрифт  Подчеркнутый шрифт  Выравнивание по центру  Список  Заголовок  Разделительная линия  Код  Маленький шрифт  Крупный шрифт  Цитирование блока текста  Строчное цитирование
  • вопрос Круглого стола № XXX

  • вопрос № YYY в тесте № XXX Рыцарской Квинтаны

  • сообщение № YYY в теме № XXX Базарной площади
  • обсуждение темы № YYY Базарной площади
  •  
     Правила оформления сообщений на Королевстве

    Вопросы с аналогичными сообщениями об ошибках:
  • Application is not licensed to use this feature (6)


    Страница избранных вопросов Круглого стола.
  •   
    Время на сайте: GMT минус 5 часов

    Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter.
    Функция может не работать в некоторых версиях броузеров.

    Web hosting for this web site provided by DotNetPark (ASP.NET, SharePoint, MS SQL hosting)  
    Software for IIS, Hyper-V, MS SQL. Tools for Windows server administrators. Server migration utilities  

     
    © При использовании любых материалов «Королевства Delphi» необходимо указывать источник информации. Перепечатка авторских статей возможна только при согласии всех авторов и администрации сайта.
    Все используемые на сайте торговые марки являются собственностью их производителей.

    Яндекс цитирования