
Модуль Strings
Модуль Strings предназначен для работы со строками, заканчивающимися нуль-символом, то есть символом с кодом 0 (их часто называют ASCIIZ-строки). Этот вид строк введен в Паскаль специально для работы с длинными строками и программирования под Windows. Модуль Strings содержит функции копирования, сравнения, слияния строк, преобразования их в строки типа string, поиска подстрок и символов.
Стандартные модули языка Pascal
Перечислим самые распространенные модули, входящие в состав стандартных библиотек языка Pascal. Подробное описание этих библиотек можно найти в любом справочном издании1).
System
Модуль System является основным: в нем содержатся все изученные нами стандартные процедуры и функции обработки арифметических выражений, множеств, строк и т.п. Специального подключения этот модуль не требует: его содержимым можно пользоваться по умолчанию.
Напомним, что этот модуль содержит следующие типы подпрограмм:
-
подпрограммы для обработки величин порядковых типов данных (dec, inc, odd, pred, succ);
-
арифметические функции;
-
функции преобразования типов данных (chr, ord, round, trunc);
-
процедуры управления процессом выполнения программы (break, continue, exit, halt);
-
подпрограммы обработки строк (concat, copy, delete, insert, length, pos, str, val);
-
подпрограммы файлового ввода и вывода;
-
подпрограммы динамического распределения памяти (dispose, freemem, getmem, new);
-
функции для работы с указателями и адресами (addr);
-
а также некоторые другие подпрограммы (например, exclude, include, random, randomize, upcase).
Crt
Модуль Crt служит для организации "хорошего" вывода на экран. Подробнее о содержимом этого модуля мы расскажем в следующей лекции.
Wincrt
Модуль WinCrt предназначен для создания программ, поддерживающих простейший оконный интерфейс.
Printer
Модуль Printer позволяет производить вывод информации не на консоль, а на принтер (под операционной системой DOS).
Winprn
Модуль WinPrn является аналогом модуля Printer для операционной системы Windows.
Dos
Модуль Dos позволяет обмениваться информацией с операционной системой. Системное время, прерывания, состояния параметров окружения, процедуры обработки процессов, работа с дисковым пространством - всем этим занимается модуль Dos.
Windos
Модуль WinDos является аналогом модуля Dos для операционной системы Windows.
Strings
Модуль Strings позволяет перейти от стандартных строк языка Pascal к строкам, ограниченным нулем. В отличие от обычных строк, чья длина не может превышать 255 символов, эти строки могут состоять из 65 535 символов, причем конец каждой такой строки помечен символом #0.
Graph
Модуль Graph содержит разнообразнейшие подпрограммы, которые позволяют создавать на экране различные рисунки из многоцветных геометрических фигур. Модуль управляет также палитрами, фактурами фона и шрифтами.
Overlay
Модуль Overlay предоставляет возможность делать большие программы оверлейными (многократно использующими одну и ту же область памяти).
Winapi
Модуль WinApi отвечает за создание динамических библиотек. Этот модуль свойственен лишь поздним версиям языка Pascal (например, Turbo Pascal 7.0).
Дальше
»
Если в секциях связей нескольких модулей были определены константы или переменные с одинаковыми именами, но с разными значениями, то путаницы позволит избежать уже знакомый нам прием: указание имени модуля перед идентификатором:
<имя_модуля>.<идентификатор>
Если имя модуля не указано, то идентификатор считается принадлежащим текущему модулю. И только если в текущем модуле этот идентификатор не был объявлен, то начинается поиск в подключенных модулях.
Например, если модульная программа имеет структуру, изображенную на рис. 13.1, то таблица доступности переменных будет выглядеть так:
|
Связи |
Способ обращения к одноименным переменным |
||||||
program prg; |
uses A,B,C; |
p |
a.p |
b.p |
c.p |
не видна |
не видна |
|
unit A; |
uses C,D,F; |
не видна |
p |
не видна |
c.p |
d.p |
f.p |
|
unit B; |
uses F; |
не видна |
не видна |
p |
не видна |
не видна |
f.p |
|
unit C; |
- |
не видна |
не видна |
не видна |
p |
не видна |
не видна |
|
unit D; |
- |
не видна |
не видна |
не видна |
не видна |
p |
не видна |
|
unit F; |
- |
не видна |
не видна |
не видна |
не видна |
не видна |
p |
|
Замечание: В секциях связей не допускается рекурсивное использование модулями друг друга. Иными словами, нельзя одновременно написать
Если сразу несколько модулей содержат секции инициализации, то порядок выполнения этих секций будет следующим:
-
Если модуль А подключает модуль В (не важно, в какой именно секции), то секция инициализации модуля В будет выполнена раньше, чем секция инициализации, содержащаяся в модуле А.
-
Если два модуля В и С подключаются на одном уровне (считаются равноправными), то их секции инициализации будут выполнены в том порядке, в каком имена этих модулей указаны в разделе uses.
Замечание: Последовательность подключения модулей соответствует обратному обходу орграфа связей (см. лекцию 12).
Если каждый модуль из тех, что составляют программу на рис. 13.1, имеет непустую секцию инициализации, то эти секции будут выполнены в следующей последовательности: C, D, F, A, B. Если же к головной программе модули будут подключены в другом порядке, например:
uses B,A,C;
то секции инициализации будут выполняться в другой последовательности: F, B, C, D, A.