Секция реализации
Секция реализации - "приватная" часть - начинается зарезервированным словом implementation. Все, что описано в секции интерфейса, является видимым в секции реализации: константы, типы, переменные, процедуры и функции. Кроме того, в секции реализации могут быть свои дополнительные описания, которые не являются видимыми для программ, использующих этот модуль. Программа не знает об их существовании и не может ссылаться на них или обращаться к ним. Однако, эти скрытые эле- менты могут использоваться (и, как правило, используются) "види- мыми" процедурами и функциями, то есть теми подпрограммами, чьи заголовки указаны в секции интерфейса.
Оператор uses может содержаться в секции реализации (implementation) и должен непосредственно следовать за ключевым словом implementation.
Обычные процедуры и функции, описанные в интерфейсной сек- ции, то есть те из них, которые не являются подставляемыми (inline), должны повторно указываются в секции реализации. Заго- ловок procedure/function должен быть или идентичным тому, который указан в секции интерфейса, или иметь более краткую форму. В слу- чае краткой формы наберите ключевое слово (procedure или function), а за ним укажите имя подпрограммы (идентификатор). За- тем подпрограмма должна содержать все свои локальные описания (метки, константы, типы, переменные и вложенные процедуры и функ- ции), за которыми должно находиться основное тело самой подпрог- раммы. Пусть в интерфейсной части указаны следующие описания:
procedure ISwap(var V1,V2 : integer); function IMax(V1,V2 : integer) : integer;
Тогда Секция реализации будет иметь следующий вид:
procedure ISwap; var Temp := integer; begin Temp := V1; V1 := V2; V2 := Temp end; {конец процедуры Swap} function IMax(V1,V2 : integer) : integer; begin if V1 > V2 then IMax := V1 else IMax := V2 end; { конец функции Max }
Подпрограммы, локальные для секции реализации (то есть не описанные в секции реализации), должны иметь полный (несокращен- ный) заголовок procedure/function.