Текущий архив: 2006.12.03;
Скачать: CL | DM;
Вниз
Запутался с показом немодальной формы из DLL Найти похожие ветки
← →
Ketmar © (2006-10-24 08:14) [40]>[39] DmiSb 24-Oct-2006, 08:03
>программа и ДЛЛ компиляться с пакетами.
>Это не выход.
отчего?
>Задача разбить программу на модули
и всенепременно динамически подгружаемые? может, тогда проще Оберон взять? %-)
← →
DmiSb (2006-10-24 08:35) [41]Ну хорошо, сдаюсь.
Может быть это была не самая лучшая мысль сделать программу с ДЛЛ,
но задача стояла следующая :
Программа должна уметь обновлять сама себя через Инет (VPN сеть). Используя ДЛЛ, её можно выгрузить, скачать новую, и загрузить.
Может кто подскажет, как это сделать красивее ?
← →
Ketmar © (2006-10-24 08:36) [42]пакетами?
← →
DmiSb (2006-10-24 08:42) [43]> пакетами?
В смысле ?
← →
Ketmar © (2006-10-24 08:44) [44]>[43] DmiSb 24-Oct-2006, 08:42
>> пакетами?
>В смысле ?
Borland сделали пакеты. Borland позволили пользователям делать пакеты. Borland дали для этого инструмент, которым пользовались сами.
← →
Slym © (2006-10-24 08:54) [45]модули компиль в пакеты :)
← →
DmiSb (2006-10-24 09:06) [46]Но тогда пакеты будут грузиться сразу ?
← →
metalfan © (2006-10-24 09:11) [47]
> DmiSb (24.10.06 09:06) [46]
с чего бы это?
http://delphiworld.narod.ru/base/little_about_plugins.html
← →
DmiSb (2006-10-24 09:46) [48]Да действительно.
И как я на эту статью раньше не наткнулся.
Интересно пообщаться с тем, кто реально использовал эту методику.
← →
DmiSb (2006-10-25 07:49) [49]>с чего бы это?
>http://delphiworld.narod.ru/base/little_about_plugins.html
Зы.....
У меня кстати не удалось повторить подвиг автора :-(
Если не делать Register(какой-либо класс),
функция GetClass(какой-либо класс) выдает nil
← →
Сергей М. © (2006-10-25 08:55) [50]
> DmiSb (25.10.06 07:49) [49]
> Если не делать Register(какой-либо класс),
> функция GetClass(какой-либо класс) выдает nil
Что в этом удивительного ?
← →
DmiSb (2006-10-25 09:18) [51]> Что в этом удивительного ?
Получается что ссылка на модуль с формой, которую я хочу хранить в пакете, должна быть в моем приложениии. И я так понимаю форма попадет в приложение, только в виде пакета ? Где же тогда, модульность ?
Или я не правильно понял ?
Сейчас пробую еще один путь, показанный в
http://www.codingclub.net/index.php?go=Articles&in=view&id=183
О форме, которая лежит в .bpl, основное приложение ничего не знает.
Методом TFormLoader FindClassByName(".....") класс формы определяется достаточно легко, я его только вынес в puplic секцию.
← →
metalfan © (2006-10-25 09:25) [52]
> Методом TFormLoader FindClassByName(".....") класс формы
> определяется достаточно легко, я его только вынес в puplic
> секцию.
кого куда вы вынесли?!
← →
Юрий Зотов © (2006-10-25 09:58) [53]> DmiSb (25.10.06 07:49) [49]
unit MyInterfaces; // Используется EXE и всеми DLL.
type
IMyInterface = interface
procedure Method1(...);
function Method2(...): ...;
...
еnd;
unit MyPluginForm; // Используется какой-то DLL
uses
MyInterfaces;
TPluginForm = class(TForm, IMyInterface)
...
end;
procedure GetMyInterface: IMyInterface; stdcall; // Экспортируется из DLL
begin
Result := TPluginForm.Create(...) as IMyInterface
end;
И это все. Модуль EXE знает, где лежат плагины (DLL или BPL). Он знает, что каждый из них экспортирует функцию GetMyInterface, а та возвращает ссылку на интерфейс IMyInterface. Еще он знает, какие методы этот интерфейс имеет, для чкго они нужны и как их вызывать.
А больше ему и знать ничего не нужно. Его не интересует ни класс, который реализует этот интерфейс (поэтому не требуется никаких RegisterClass), ни способ реализации, ни даже язык, на котором эта DLL написана.
Exe грузит плагин (LoadLibrary), вызывает его функцию GetMyInterface (GetProcAddress), получает ссылку на интерфейс IMyInterface - а далее просто вызывает методы этого интерфейса. Тогда и такие, когда и какие ему нужны. Остальное делает плагин, а КАК он это делает - для Exe неважно.
← →
Ketmar © (2006-10-25 10:24) [54]>[53] Юрий Зотов(c) 25-Oct-2006, 09:58
offtopic: Юрий, вы решили учить нас личным примером? (это я намекаю на "ламеров второго рода") нам-то вряд ли поможет, но вопрошающим крупно повезло. многие даже не понимают, как им повезло... (без иронии)
← →
Юрий Зотов © (2006-10-25 11:51) [55]> Ketmar © (25.10.06 10:24) [54]
Ага-а, значит, прочитал все-таки... и задумался-таки?
Это есть гуд.
:о)
А насчет "не понимают" - потом поймут. Не скоро. А тогда, когда станут готовы к такому пониманию.
Это и есть главное. Понимаешь?
:о)
← →
DmiSb (2006-10-25 11:54) [56]>[54]
Да я собственно даже на "второго рода" не претендую.
У меня такая задача первая.
>[53]
> procedure GetMyInterface: IMyInterface; stdcall; // Экспортируется из DLL
> begin
> Result := TPluginForm.Create(...) as IMyInterface
> end;
Я так понял, этот подход работает в DLL, потому как в BPL "as IMyInterface" не компилиться. И еще мне тут [31], [32] сильно советовали отказаться от форм из DLL. Как тогда этот подход можно использовать из BPL ? Может быть есть какая-нибудь литература по интерфейсам ?
← →
Сергей М. © (2006-10-25 11:59) [57]
> не компилиться
Значит у тебя ошибка в тексте программы.
← →
Amoeba © (2006-10-25 12:17) [58]Статьи по рассматриваемому вопросу:
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=274
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=468
← →
DmiSb (2006-10-25 12:31) [59]С этой статьи
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=468
я и начал изучение использования пкетов в качестве плагинов, но ......[49],
а ссылка на исходники в статье битая.
Ладно, буду пробовать дальше....
Всем огромное спасибо
← →
Ketmar © (2006-10-25 13:13) [60]>[55] Юрий Зотов(c) 25-Oct-2006, 11:51
>Ага-а, значит, прочитал все-таки... и задумался-таки?
конечно, прочитал. даже осмыслил немного -- в применении к себе. %-)
>Это и есть главное. Понимаешь?
так я ж не к тому, что "бросайте это всё, ведь не оценят и не поймут". вовсе даже наоборот.
← →
Наиль © (2006-10-25 13:52) [61]> Ага-а, значит, прочитал все-таки... и задумался-таки?
А можно ссылку на то, от чего Ketmar задумался?
Хочется тоже преобщится к великому.
← →
Германн © (2006-10-25 16:10) [62]
> А можно ссылку на то, от чего Ketmar задумался?
Ищи в"Потрепаться" про "ламеров второго рода" :-)
← →
Ketmar © (2006-10-25 16:13) [63]>[62] Германн(c) 25-Oct-2006, 16:10
>Ищи в"Потрепаться" про "ламеров второго рода" :-)
угу. а то у меня ещё нет полнотекстового поиска в CDM. %-)
← →
MetalFan © (2006-10-25 18:23) [64]а что такое CDM?
← →
Ketmar © (2006-10-25 18:40) [65]>[64] MetalFan(c) 25-Oct-2006, 18:23
>а что такое CDM?
http://delphimaster.net/view/15-1158621901/
Страницы: 1 2 вся ветка
Текущий архив: 2006.12.03;
Скачать: CL | DM;
Память: 0.59 MB
Время: 0.06 c