Механизм неявного вызова наиболее прост, т. к. выполняется автоматически и основан на имеющейся в приложении информации о вызываемых функциях и динамических библиотеках. Однако разработчик не имеет возможности влиять на ход загрузки DLL. Если операционная система не смогла загрузить библиотеку, просто выдается сообщение об ошибке. Единственный способ повлиять на процесс загрузки — использовать секцию инициализации библиотеки (см. выше).
В качестве примера неявного вызова рассмотрим простое приложение
DemoDLLl, использующее функции библиотеки
DataCheck (см. выше). Для этого в нем имеются три компонента
TEdit, в которых осуществляется проверка введенной строки на соответствие формату одного из типов данных.
Примечание
Проекты DemoDLL1
и DataCheck объединены в одну группу.
Переключение между проектами легко выполняется утилитой Диспетчер проектов.
Листинг 28.5.Модуль главной
формы проекта DemoDLL1
function IsValidlnt(AText: String): Boolean; external 'DataCheck.dll';
function IsValidDate(AText: String): Boolean; external
'DataCheck.dll';
function ValidTime(AText: String): Boolean; external
'DataCheck.dll';
implementation {$R *.DFM}
procedure TMainForm.EditlExit(Sender: TObject);
begin if not IsValidlnt(Editl.Text)
then Editl.Clear;
end;
procedure TMainForm.Edit2Exit(Sender: TObject);
begin
if not IsValidDate(Edit2.Text)
then Edit2.Clear; end;
procedure TMainForm.Edit3Exit(Sender: TObject);
begin if not ValidTime(Edits.Text)
then EditS.Clear;
end;
end.
Для организации неявного вызова достаточно объявить нужную функцию с директивой
external и указать имя содержащей ее динамической библиотеки. Обратите внимание, что третья функция объявлена под псевдонимом
isValidTime, который объявлен для этой функции при помощи ключевого слова
name в исходном коде динамической библиотеки.
В дальнейшем импортированные функции используются обычным образом.
Знаете ли Вы, что такое "Большой Взрыв"? Согласно рупору релятивистской идеологии Википедии "Большой взрыв (англ. Big Bang) - это космологическая модель, описывающая раннее развитие Вселенной, а именно - начало расширения Вселенной, перед которым Вселенная находилась в сингулярном состоянии. Обычно сейчас автоматически сочетают теорию Большого взрыва и модель горячей Вселенной, но эти концепции независимы и исторически существовало также представление о холодной начальной Вселенной вблизи Большого взрыва. Именно сочетание теории Большого взрыва с теорией горячей Вселенной, подкрепляемое существованием реликтового излучения..." В этой тираде количество нонсенсов (бессмыслиц) больше, чем количество предложений, иначе просто трудно запутать сознание обывателя до такой степени, чтобы он поверил в эту ахинею. На самом деле взорваться что-либо может только в уже имеющемся пространстве. Без этого никакого взрыва в принципе быть не может, так как "взрыв" - понятие, применимое только внутри уже имеющегося пространства. А раз так, то есть, если пространство вселенной уже было до БВ, то БВ не может быть началом Вселенной в принципе. Это во-первых. Во-вторых, Вселенная - это не обычный конечный объект с границами, это сама бесконечность во времени и пространстве. У нее нет начала и конца, а также пространственных границ уже по ее определению: она есть всё (потому и называется Вселенной). В третьих, фраза "представление о холодной начальной Вселенной вблизи Большого взрыва" тоже есть сплошной нонсенс. Что могло быть "вблизи Большого взрыва", если самой Вселенной там еще не было? Подробнее читайте в FAQ по эфирной физике.