Базы данных и знаний. Проектирование баз данных по технологии "клиент-сервер" и разработка клиентских приложений. Токмаков Г.П. - 88 стр.

UptoLike

Составители: 

- 88-
Пр ичем если DLL уже загружена в память, то будет возвращен описатель загру-
женной библиотеки - повторно она загружаться не будет. В этом проявляется
основное достоинство использования DLL: несмотря на то, что DLL используется
несколькими программами, она загружается в память тол ько один раз.
Для проверки успешности загрузки, используется следующий фрагмент
программы:
if hLib<32 then
begin
ShowMessage ( ' Отсутствует Login.dll');
Exit;
end;
Здесь проверяется, не является ли возвращаемое функцией LoadLibrary
значение < 32.
Определение адреса экспортируемой процедуры. После успешной загруз-
ки DLL необходимо найти адрес экспортируемой процедуры. Для этого исполь-
зуется функция GetProcAddress:
ShowLoginDilog:=
TShowLoginDialog(GetProcAddress(hLib,'SHOWLOGINDIALOG'));
Найденный адрес процедуры присваивается специально объявленной пе-
ременной, имеющей процедурный тип, объявленный здесь же в разделе type:
type
TShowLoginDialog = procedure(Handle: Thandle; p: pointer);
var
ShowLoginDialog: TShowLoginDialog;
Создание экземпляра класса TloginData. Кроме того, создается экземпляр
класса TloginData, который будет передаваться этой процедуре:
LoginData: = TLoginData.Create;
Вызов процедуры ShowLoginDialog. И только после проведения описанных
подготовительных процедур, производится вызов процедуры
ShowLoginDialog, экспортируемой ИЗ DLL:
ShowLoginDialog(Application.Handle,LoginData);
Именно здесь создается и выводится на экран диалоговое окно ввода паро-
ля, а введенные данные передаются в класс LoginData. После выполнения сво-
их функций DLL выгружается из памяти:
FreeLibrary(hLib);
Использование данных, полученных с помощью DLL. Далее мы работаем
с классом LoginData. В первую очередь проверяется, была ли нажата кнопка
ок. Если нет, то вообще ничего делать не надо. Если клавиша ок была нажата,
то выполняется обычное подключение к БД, предварительно отключив