Механизм неявного вызова наиболее прост, т. к. выполняется автоматически и основан на имеющейся в приложении информации о вызываемых функциях и динамических библиотеках. Однако разработчик не имеет возможности влиять на ход загрузки 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 в исходном коде динамической библиотеки.
В дальнейшем импортированные функции используются обычным образом.
Знаете ли Вы, почему "черные дыры" - фикция? Согласно релятивистской мифологии, "чёрная дыра - это область в пространстве-времени, гравитационное притяжение которой настолько велико, что покинуть её не могут даже объекты, движущиеся со скоростью света (в том числе и кванты самого света). Граница этой области называется горизонтом событий, а её характерный размер - гравитационным радиусом. В простейшем случае сферически симметричной чёрной дыры он равен радиусу Шварцшильда". На самом деле миф о черных дырах есть порождение мифа о фотоне - пушечном ядре. Этот миф родился еще в античные времена. Математическое развитие он получил в трудах Исаака Ньютона в виде корпускулярной теории света. Корпускуле света приписывалась масса. Из этого следовало, что при высоких ускорениях свободного падения возможен поворот траектории луча света вспять, по параболе, как это происходит с пушечным ядром в гравитационном поле Земли. Отсюда родились сказки о "радиусе Шварцшильда", "черных дырах Хокинга" и прочих безудержных фантазиях пропагандистов релятивизма. Впрочем, эти сказки несколько древнее. В 1795 году математик Пьер Симон Лаплас писал: "Если бы диаметр светящейся звезды с той же плотностью, что и Земля, в 250 раз превосходил бы диаметр Солнца, то вследствие притяжения звезды ни один из испущенных ею лучей не смог бы дойти до нас; следовательно, не исключено, что самые большие из светящихся тел по этой причине являются невидимыми." [цитата по Брагинский В.Б., Полнарёв А. Г. Удивительная гравитация. - М., Наука, 1985] Однако, как выяснилось в 20-м веке, фотон не обладает массой и не может взаимодействовать с гравитационным полем как весомое вещество. Фотон - это квантованная электромагнитная волна, то есть даже не объект, а процесс. А процессы не могут иметь веса, так как они не являются вещественными объектами. Это всего-лишь движение некоторой среды. (сравните с аналогами: движение воды, движение воздуха, колебания почвы). Подробнее читайте в FAQ по эфирной физике.