cp:obx-export
Это старая версия документа!
Экспортирование переменных и процедур
Этот пример демонстрирует, как можно обратиться к переменным и процедурам одного модуля из другого. Для демонстрации примера приведены два модуля.
Модуль для экспорта
MODULE TestExport; VAR str-:ARRAY 40 OF CHAR; rVal*: REAL; BEGIN str:='Вася Пупкин'; rVal:=10.5 END Export.
В этом модуле определены два экспортируемых члена:
- str — только для чтения (со знаком '-')
- rVal — на чтение и запись (со знаком '*')
Если попытаться изменить 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 (и многих других идеологически устаревших языков) в Компонентном Паскале всё, что не помечено на экспорт — скрыто. Это выверенное решение и абсолютно логичное. Никому не понравится купленная в магазине микроволновка, у которой все провода висят наружу.
cp/obx-export.1514352117.txt.gz · Последнее изменение: (внешнее изменение)
