Home

Page 352
Page 352
background image

Полезное 345

except

raise

 загрузки

end

end

else

except

raise

end;

Found :=

end;

end;

В самом начале инициализируется список  i l . Затем заносим в переменную

plugDir директорию, в которой нужно будет искать дополнительные модули.

После этих приготовлений запускается поиск файлов в указанной директо-

рии с помощью функции FindFirst. Если файл найден, то загружаем най-
денную библиотеку В

 С ПОМОЩЬЮ

 Следующим

этапом ищем в загруженной библиотеке процедуру инициализации с помо-
щью функции GetProcAddress. У этой функции имеется два параметра:
• указатель на загруженную библиотеку;

 второй параметр

 имя процедуры, которую надо найти. Здесь мы ука-

зываем КОНСТаНТу GetProcAddress, В КОТОрОЙ

 ИМЯ

Если результат выполнения функции GetProcAddress не равен нулю, значит

 инициализации найдена, и ее надо выполнить. Для этого сначала

создаем объект типа

 — это интерфейс, который мы создали

для взаимодействия дополнительного модуля с главной программой. После

этого вызываем процедуру InitPlugin из библиотеки, передавая ей указа-

тель на созданный для взаимодействия интерфейс. Тут же добавляем пере-

менную

 в список il для последующего использования.

Если функция инициализации не найдена, то выгружаем библиотеку, пото-

му что это может быть любой

 не являющийся

 для

нашей программы. Делается это с помощью API-функции FreeLibrary.

При событии onDestroy главной формы мы должны уничтожить список:

procedure
begin

i l . F r e e ;

end;


Copyright © 2020 Файлообменник files.d-lan.dp.ua

Использование любых материалов сайта возможно только с разрешения автора.