Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2002.07.15;
Скачать: [xml.tar.bz2];

Вниз

---|Ветка была без названия|---   Найти похожие ветки 

 
Lmatveev   (2002-04-23 22:01) [0]

Всем привет!
Вот с какой проблемой столкнулся:
Всю жизнь делал всякие плагины с помощью обычных DLL. А тут попробовал BPL. Делаю так:
1.Из основной программы (с MDI формой) вызываю LoadPackage()
2.По GetProcAddress получаю адрес процедуры в пакадже, которая объявлена как stdcall и прописана в exports
3.Вызываю эту процедуру и передаю ей переменные Application, Screen и ссылку на ADOConnection с помощью TADOConnection.ConnectionObject.
4.В процедуре присваиваю переменным Application и Screen полученные значения.
5.Там же создаю DataModule и объекту TADOConnection, расположенному на нем присваиваю полученный ConnectionObject.
6.Там же создаю и показываю MDIChild форму.
Все работает нормально.
Но потом началось самое интересное:
Я поместил на форму компонент TADOQuery (даже свойств ему никаких не ставил) и тут же получил ошибку "Application is not licensed to use this feature"... Что меня повергло в шоковое состояние.
Покопался в исходниках. Оказывается вызывает эту ошибку процедура sysutils.RPR, которая вызывается из TDataSet.Create.

Резюме:

Может хоть у кого-нибудь есть идеи, что это все значит и как с этим бороться. Наверное, я с пакаджами как-то не так работаю... Подскажите, в чем я не прав...


 
Suntechnic   (2002-04-24 05:33) [1]

http://community.borland.com/article/0,1410,27031,00.html


 
Lmatveev   (2002-04-24 10:44) [2]

Спасибо за линк. Там написано, что эта ошибка возникает только если пытаться совместить разные редакции Delphi. Но я-то все делаю на одной машине на которой в жизни ничего не стояло кроме D6 Enterprise.
Может есть еще идеи...


 
Lmatveev   (2002-04-24 11:15) [3]

Могу локализовать проблему.
Тоже самое происходит если просто сказать LoadPackage,
вызвать из него некую процедуру по GetProcAddress, а в ней попытаться создать любой TDataSet.


 
Севостьянов Игорь   (2002-04-24 12:31) [4]

Исходя из того что делает sysutils.RPR можно судить, что она не можеть загрузить Resources (RC_DATA). Не буду утверждать, но попробуй удалить *.res файлы для проекта и для *.bpl (*.dpk) Delphi скажет, что не находит его и пересоздаст *.res файл
В принципе там ведь в *.res и с версией что-то связано...
Пробуй...


 
Lmatveev   (2002-04-24 13:30) [5]

Я наконец разобрался. Может кому интересно...
Оказывается, чтобы в качестве плагинов использовать BPL надо основное приложение компилировать с "Build with runtime packages". Тогда у основного приложения и плагина будут уже общие Application, Screen и т.п. А использовать его надо так:
В плагине в initialization написать RegisterClass(), а в основном приложении уже работать с этими классами через GetClass()


 
Севостьянов Игорь   (2002-04-24 17:03) [6]

Build with runtime packages
Это же азы - кто ж мог догаться, что ты не включил сию опцию
Она показывает что все, что в bpl не надо в exe засовывать и т.д.
Все тоже со стандартными bpl (VCL и т.д.) - Exe файл маленький, но требует bpl вместе с собой



Страницы: 1 вся ветка

Форум: "Система";
Текущий архив: 2002.07.15;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.011 c
4-47868
Serd_hhc
2002-05-11 08:56
2002.07.15
Закрытие окна.


6-47646
KPV-10k
2002-05-03 22:08
2002.07.15
Управление занятым сокетом


1-47544
tsarevep
2002-06-25 20:42
2002.07.15
PageControl


3-47176
BizonWar
2002-06-17 18:00
2002.07.15
Нужно преслать данные из Paradox в SQL Server


4-47911
KiberArt
2002-05-11 10:52
2002.07.15
The KeyboardProc hook procedure is an application-defined





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский