Begin end.

Первое, что здесь бросается в глаза – объявление в разделе typeнового типа – TCompProc. Новый тип объявлен как процедура с одним параметром в виде переменной типа PChar и имеющей стандартный вызов. Объявление этого типа необходимо, чтобы объяснить динамической библиотеке, какого вида будет процедура в основной программе, которую надо будет вызывать.

Напоминаю, что тип PChar – это указатель на строку оканчивающуюся нулём (шестнадцатеричный #0). Сама переменная типа PChar, это только указатель на начало строки, а конец строки определяется по наличию значения #0. Но о конце строки нам никогда не придётся заботиться, нас больше будет волновать выделенная память, потому что под строку типа PChar нужно резервировать память.

Но всё это небольшое отступление и напоминание уже пройдённого материала, так что продолжим рассматривать наш модуль. После объявление нового типа процедуры идёт процедура CompS, которая будет экспортироваться из модуля. Эту процедуру мы будем вызывать из основной программы, а из неё уже будем обращаться к процедуре основной программы.

В первой строке процедуры я проверяю значение переданного параметра Proc. В этом параметре мы должны получать адрес процедуры, которую надо вызвать. Если параметр не равен нулю, то можно вызывать процедуру. Для вызова я пишу следующий код: TCompProc(Proc)(Str). Этим кодом я вызываю процедуру и передаю ей в качестве параметра переменную Str, которую мы сами же получили в качестве входного параметра.

В принципе, с процедурой всё. Остальное тебе уже должно быть знакомо. Переходим к написанию основного модуля.

Создай новое приложение. В разделе typeсразу же объяви следующее: