Инструменты пользователя

Инструменты сайта


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.1577968199.txt.gz · Последнее изменение: 2020/10/29 07:08 (внешнее изменение)