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 TestExport, Log;
PROCEDURE Start*;
BEGIN
Log.String(TestExport.str); Log.Ln;
TestExport.str:='Петя Телевизоров'; (* <- эта строка недопустима!!! *)
Log.Real(TestExport.rVal); Log.Ln;
TestExport.rVal:=50.1;
Log.Real(TestExport.rVal); Log.Ln
END Start;
END TestImport.
^TestImport.Start
В таком виде этот модуль скомпилировать невозможно. Присвоение строке запрещено.
Важное замечание
В отличии от FreePascal (и многих других идеологически устаревших языков) в Компонентном Паскале всё, что не помечено на экспорт — скрыто. Это выверенное решение и абсолютно логичное. Никому не понравится купленная в магазине микроволновка, у которой все провода висят наружу.
cp/obx-export.txt · Последнее изменение: — иван_денисов
