Форум: "Потрепаться";
Текущий архив: 2002.05.02;
Скачать: [xml.tar.bz2];
ВнизМожно ли грузить доп. инструкции к коду во время работы ехешника, например, из файла? Найти похожие ветки
← →
vuk (2002-03-25 22:39) [12]Делается, в общем-то не совсем тривиально. Возможно даже придется почти всю программу перелопачивать. То решение, которое я предлагаю основано на использовании интерфейсов. Все описано достаточно схематично, но тем не менее подобная схема вполне работоспособна.
Имена интерфейсов я выдумываю на ходу, содержимое тоже.
IEnvironment - это интерфейс, при помощи которого плагин обращается к среде выполнения, предоставляемой ему программой. Этот интерфейс реализуется где-то внутри программы. Я его не расписываю, т.к. не знаю, что у Вас там есть. Интерфейс может быть достаточно сложным, в том числе он может предоставлять доступ к другим интерфейсам внутри программы. Важно то, что IEnvironment является "дверью", через которую плягин может "войти внутрь".
IEnvironment = interface
["здесь GUID"]
//исключительно для примеру
function GetDatabaseServerName : string;
end;
IPlugin - интерфейс плагина, например такой:
IPlugin = interface
["здесь GUID"]
procedure Initialize( Env : IEnvironment );
procedure Execute;
end;
Тогда в DLL можно описать всего одну функцию:
function CreatePlugin : IPlugin;
Когда нужно приложение просто загружает библиотеку, находит нужную функцию, получает интерфейсную ссылку и передает плагину ссылку на IEnvironment. После этого плагин имеет возможность работать с тем, что ему предоставлено этим интерфейсом.
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2002.05.02;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.005 c