Это старая версия документа!
Этот пример демонстрирует, как можно обратиться к переменным и процедурам одного модуля из другого. Для демонстрации примера приведены два модуля.
MODULE TestExport; VAR str-:ARRAY 40 OF CHAR; rVal*: REAL; BEGIN str:='Вася Пупкин'; rVal:=10.5 END Export.
В этом модуле определены два экспортируемых члена:
Если попытаться изменить str — компилятор Компонентного Паскаля грязно выругается и сообщит, что изменять эту переменную нельзя.
MODULE TestImport; IMPORT e:=TestExport, sl:=StdLog; PROCEDURE Start*; BEGIN sl.String(e.str);sl.Ln; e.str:='Петя Телевизоров'; (* <- эта строка недопустима!!! *) slReal(e.rVal);sl.Ln; e.rVal:=50.1; slReal(e.rVal);sl.Ln END Start; END TestImport. ^TestImport.Start
В таком виде этот модуль скомпилировать невозможно. Присвоение строке запрещено.
В отличии от FreePascal (и многих других идеологически устаревших языков) в Компонентном Паскале всё, что не помечено на экспорт — скрыто. Это выверенное решение и абсолютно логичное. Никому не понравится купленная в магазине микроволновка, у которой все провода висят наружу.