![]() |
Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Подключение других модулей к данному (модулю)
Программный модуль может использовать другие модули, для этого они определяются в операторе uses. Оператор в описании модуля uses (если он имеет место) может содержаться в двух местах (в вызывающем модуле). Во-первых, он может следовать сразу после ключевого слова interface. В этом случае любые константы и типы данных, описанные в интерфейсной секции этих модулей, могут использоваться в любом месте (в любой из трёх секций) данного модуля и, следовательно, во всей основной программе так же. Во-вторых, он может следовать немедленно за ключевым словом implementation. В этом случае предполагается, что все описания из интерфейсных частей этих импортируемых модулей не используются в интерфейсной части данного модуля и, следовательно, не могут быть использованы в основной программе, а могут использоваться только в секции реализации данного модуля. Причем об использовании импортируемых таким образом модулей не будет знать ни один модуль кроме данного (импортирующего). Ссылки на описания модуля Как только модуль включается в программу (через uses), все константы, типы данных, переменные, процедуры и функции, описанные в секции интерфейса этого модуля, становятся доступными для этой программы. В том случае, если имена переменных и функций в интерфейсной части модуля и в программе, использующей этот модуль, совпадают, то действует следующее правила видимости имен: - интерфейсные идентификаторы модулей, указанных в списке USES других модулей (т.е. используемых в других модулях), образуют самый внешний блок программы; - интерфейсные элементы модулей, использующих с помощью USES другие модули, образуют блок, вложенный в первый блок, и т.д. - самый внутренний блок – программа, использующая модули. Например:
то вложенность блоков будет иметь вид:
Пример показывает: - из программы видно то, что и в А, и в В; - из А видно то, что в В, но не видно то, что в программе;. - из В не видно того, что в А и не видно того, что в программе. Таким образом, при совпадении имени (идентификатора) в программе и модулях A и B, обращение в программе будет происходить к переменной, описанной в программе (действует старое правило видимости переменных в Паскале – локальная переменная перекрывает видимость глобальной). Для обращения в теле основной программы к переменной или функции, описанной в модуле, необходимо применить составное имя, состоящее из имени модуля и имени переменной, разделенных точкой. Например, пусть имеется модуль, в котором описана переменная К:
В модуле А локальная (для него) переменная K будет перекрывать область видимости глобальной переменной К (из модуля B). Пусть программа Р, использующая этот модуль, также содержит переменную К. Для того, чтобы в программе P иметь доступ к переменной K из модуля A, необходимо задать составное имя вида < имя модуля>.К: Program P; uses A; var K: Char; begin k: ='a'; { обращение к переменной К из программы } A.k: =25; { обращение к переменной К из модуля А} B.k: =’25’; { обращение к переменной К из модуля B} end. Следует отметить, что имя модуля (в составном имени? ) может предшествовать любому идентификатору: константе, типу данных, переменной или подпрограмме.
Пример создания модуля
этот модуль надо записать в файл MyUnit.pas
Вопрос: что изменится (видимость чего и как изменится), если использовать функции (в модуле) без параметров, а переменные x и y объявить глобальными а) в программе или б) в модуле
Популярное:
|
Последнее изменение этой страницы: 2016-07-12; Просмотров: 497; Нарушение авторского права страницы