Показаны различия между двумя версиями страницы.
cp:obx-export [2020/01/02 15:31] иван_денисов |
cp:obx-export [2020/10/29 07:08] |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | ===== Экспортирование переменных и процедур ===== | ||
- | Этот пример демонстрирует, | ||
- | Для демонстрации примера приведены два модуля. | ||
- | |||
- | ==== Модуль для экспорта ==== | ||
- | |||
- | < | ||
- | 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); | ||
- | TestExport.str: | ||
- | Log.Real(TestExport.rVal); | ||
- | TestExport.rVal: | ||
- | Log.Real(TestExport.rVal); | ||
- | END Start; | ||
- | |||
- | END TestImport. | ||
- | |||
- | ^TestImport.Start | ||
- | |||
- | </ | ||
- | |||
- | В таком виде этот модуль скомпилировать невозможно. Присвоение строке запрещено. | ||
- | |||
- | ==== Важное замечание ==== | ||
- | |||
- | В отличии от **FreePascal** (и многих других идеологически устаревших языков) в **Компонентном Паскале** всё, что не помечено на экспорт --- скрыто. Это выверенное решение и абсолютно логичное. Никому не понравится купленная в магазине микроволновка, | ||
- |