Содержание материала

Как уже говорилось выше, одним из недостатков статической загрузки DLL является невозможность продолжения работы приложения при отсутствии одной или нескольких библиотек. В случае с динамической загрузкой у вас появляется возможность программно обрабатывать такие ситуации и не допускать, чтобы программа "вываливалась" самостоятельно. По возвращаемому функциями LoadLibrary и GetProcAddress значениям можно определить, успешно ли прошла загрузка библиотеки и найдена ли в ней необходимая приложению процедура. Приведенный ниже код демонстрирует это.

Code:

procedure TForm1.DynamicLoadBtnClick(Sender: TObject);

type

THelloWorld = procedure(AForm : TForm);

var

DLLInstance : THandle;

HelloWorld : THelloWorld;

begin

DLLInstance := LoadLibrary('myfirstdll.dll');

if DLLInstance = 0 then

begin

   MessageDlg('Невозможно загрузить DLL', mtError, [mbOK], 0);

   Exit;

end;

@HelloWorld := GetProcAddress(DLLInstance, 'HelloWorld');

if @HelloWorld <> nil then

   HelloWorld (Self)

else

   MessageDlg('Не найдена искомая процедура!.', mtError, [mbOK], 0);

FreeLibrary(DLLInstance);

end;

  

В DLL можно хранить не только код, но и формы. Причем создание и помещение форм в динамическую библиотеку не слишком сильно отличается от работы с формами в обычном проекте. Сначала мы рассмотрим, каким образом можно написать библиотеку, содержащую формы, а затем мы поговорим об использовании технологии MDI в DLL.

 

Разработку DLL, содержащую форму, я продемонстрирую на примере.

 

Итак, во-первых, создадим новый проект динамической библиотеки. Для этого выберем пункт меню File|New, а затем дважды щелкнем на иконку DLL. После этого вы увидите примерно следующий код:

Code:

library Project2;

{здесь были комментарии}

uses

SysUtils, Classes;

{$R *.RES}

begin

end.

 

Сохраните полученный проект. Назовем его DllForms.dpr.

 

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить