ЭЛЕКТРОННАЯ БИБЛИОТЕКА КОАПП
Сборники Художественной, Технической, Справочной, Английской, Нормативной, Исторической, и др. литературы.



 

Часть 13

Часть 2. Стандартные библиотеки
Глава 11. Модуль System
Модуль System представляет собой библиотеку исполняющей системы Турбо Паскаля. Он обеспечивает обслуживающие подпрограммы нижнего уровня для всех встроенных средств, таких, как файловый ввод-вывод, обработка строк, эмуляция операций сопроцессора 8087, вы
числения с плавающей точкой и динамическое распределение памяти. Модуль System используется любым модулем или программой автоматически, поэтому его не требуется указывать в операторе uses.
                 Стандартные процедуры и функции

     В данном разделе описываются все стандартные процедуры и функции, использующиеся в Турбо Паскале, кроме тех процедур и функций ввода-вывода, которые обсуждаются далее в разделе "Ввод и вывод". 
    Более подробная информация содержится в Главе 24 "Руководства программиста по Windows". 
     Стандартные процедуры и функции являются предописанными (встроенными). Так как записи с их предварительными описаниями действуют точно также, как если бы они были описаны в окружающем программу модуле, при описании, переопределяющем тот же идентифик
атор внутри программы конфликта не возникает. 
             Процедуры управления работой программы
 ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
 Процедура              Описание
 ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
 Eхit                   Позволяет немедленно выйти из текущего
                        модуля,

 Наlt                   Останавливает выполнение программы и
                        возвращает управление операционной
                        системе.

 RunError               Останавливает выполнение программы и
                        генерирует ошибку этапа выполнения.
 ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Процедуры и функции динамического распределения памяти

     Эти процедуры и функции используются для управления динамически распределяемой областью - областью памяти, которая занимает всю свободную память или ее часть, остающуюся при выполнении программы. Полное описание методов, используемых для управления 
динамически распределяемой областью памяти приводится в разделе "Программа динамического распределения памяти" в Главе 16 ("Вопросы управления памятью"). 
          Процедуры динамического распределения памяти
 ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
 Процедура             Описание
 ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
 Dispose               Уничтожает динамическую переменную.

 FrееМем               Уничтожает динамическую переменную данного
                       размера.

 GetМем                Создает новую динамическую переменную
                       заданного размера и устанавливает на нее
                       переменную-указатель.

 New                   Создает новую динамическую переменную и
                       устанавливает на нее переменную-указатель.
 ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

           Функции динамического распределения памяти
 ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
 Функция               Описание
 ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
 МахАvail              Возвращает размер  наибольшего непрерывного
                       свободного модуля в динамически
                       распределяемой области памяти,
                       соответствующий размеру наибольшей
                       динамической переменной, которая может быть
                       выделена при обращении в МахAvail.

 МемАvail              Возвращает количество имеющихся  в
                       диначески распределяемой области свободных
                       байт.
 ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

                        Функции передачи

     Процедуры Рack и Unpack, определенные в стандартном Паскале, в Турбо Паскале не реализованы. 
 ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
 Функция               Описание
 ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
 Сhr                   Возвращает символ, заданный целым числом.

 Оrd                   Возвращает порядковое число по значению
                       переречислимого типа.

 Rоund                 Округляет значение вещественного типа до
                       значения, имеющего длинный целый тип.

 Тrunс                 Усекает значение вещественного типа до
                       значения, имеющего длинный целый тип.
 ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

                     Арифметические функции

     Примечание: При компиляции в режиме числовой обработки (директива {$N+}) значения, возвращаемые процедурами операций с плавающей запятой модуля System, имеют не вещественный тип (real), а с расширенной точностью (extended). 
 ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
 Функция               Описание
 ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
 Abs                   Возвращает абсолютное значение аргумента.

 Аrctan                Возвращает арктангенс аргумента.

 Соs                   Возвращает косинус аргумента.

 Ехp                   Возвращает экспоненту аргумента.

 Frас                  Возвращает дробную часть аргумента.

 Int                   Возвращает целую часть аргумента.

 Ln                    Возвращает натуральный логарифм аргумента.

 Рi                    Возвращает значение числа Pi
                       (3.141592653897932385).

 Sin                   Возвращает синус аргумента.

 Sqr                   Возвращает аргумент в квадрате.

 Sqrt                  Возвращает квадратный корень аргумента.
 ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

                   Процедуры порядкового типа
 ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
 Процедура             Описание
 ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
 Dес                   Уменьшает значение переменной.

 Inс                   Увеличивает значение переменной.
 ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

                    Функции порядкового типа
 ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
 Функция               Описание
 ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
 Оdd                   Проверяет, является  ли  аргумент  нечетным
                       числом.

 Рred                  Возвращает предшествующее значение
                       аргумента.

 Suсс                  Возвращает его последующее значение.
 ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

                       Строковые процедуры
 ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
 Процедура             Описание
 ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
 Delete                Удаляет из строки подстроку.

 Insert                Добавляет в строку подстроку.

 Str                   Преобразует численное значение в его
                       строковое представление.

 Val                   Преобразует строковое значение в его
                       численное представление.
 ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

                        Строковые функции
 ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
 Функция               Описание
 ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
 Соncat                Выполняет конкатенацию последовательности
                       строк.

 Сору                  Возвращает подстроку строки.

 Length                Возвращает динамическую длину строки.

 Роs                   Производит поиск подстроки в строке.
 ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

           Функции для работы с указателями и адресами
 ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
 ФУнкции               Описание
 ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
 Аddr                  Возвращает адрес заданного объекта.

 СSeg                  Возвращает текущее значение регистра СS.

 DSeg                  Возвращает текущее значение регистра DS.

 Оfs                   Возвращает смещение для заданного объекта.

 Рtr                   Преобразует адрес базового сегмента и
                       смещение в значение типа указатель.

 Seg                   Возвращает сегмент для заданного объекта.

 SРtr                  Возвращает текущее значение регистра SР.

 SSeg                  Возвращает текущее значение регистра SS.
 ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

                         Прочие функции
 ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
 Функция               Описание
 ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
 Нi                    Возвращает старший байт аргумента.

 Lо                    Возвращает младший байт аргумента.

 РаrамСоunt            Возвращает число параметров, переданное
                       программе в командной строке.

 Randом                Возвращает случайное число.

 SizеОff               Возвращает число байт, заданных аргументом.

 Swар                  Производит перестановку старших и младших
                       бит аргумента.

 Uрсаsе                Преобразует символ в верхний регистр.
 ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

                        Прочие процедуры
 ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
 Процедура             Описание
 ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
 FillChar              Заполняет заданное число следующих друг за
                       другом бит указанным значением.

 Моvе                  Копирует заданное число непрерывных байт в
                       указанных границах из одного места в
                       другое, границы которого также указываются.

 Rаndомizе             Инициализирует встроенный генератор
                       случайных чисел случайным значением.
 ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

                   Файловый ввод и вывод

     В данном разделе кратко описываются стандартные (или встроенные) функции и процедуры ввода-вывода Турбо Паскаля. Более подробная информация содержится в Главе 19. 
                 Введение в файловый ввод-вывод

     Файловая переменная в Паскале - это любая переменная файлового типа. В Паскале имеются три класса файлов: типизованный файл, текстовый файл и нетипизованный файл. 
     Примечание: Синтаксис записи типов файлов представлен в Главе 3, в разделе "Структурные типы". 
     Перед использованием файловой переменной она должна быть связана с внешним файлом с помощью вызова процедуры Assign. Внешним файлом обычно является поименованный файл на диске, но он также может представлять собой устройство, например, клавиатуру ил
и дисплей. Во внешних файлах сохраняется записанная в файл информация, или они служат источниками информации, которая считывается из файла. 
     Когда связь с внешним файлом установлена, для подготовки ее к операции ввода или вывода файловая переменная должна быть "открыта". Существующий файл можно открыть с помощью процедуры Reset, а новый файл можно создать и открыть с помощью процедуры Re
write. Текстовые файлы, открытые с помощью процедуры Reset доступны только по чтению, а текстовые файлы, открытые с помощью процедуры Rewrite, доступны только по записи. Типизованные и нетипизованные файлы всегда допускают как чтение, так и запись, незав
исимо от того были они открыты с помощью процедуры Reset или с помощью процедуры Rewrite. 
     Любой файл, представляет собой линейную последовательность элементов, каждый из которых имеет тип элемента (или тип записи) файла. Каждый элемент файла имеет номер. Первый элемент файла считается нулевым элементом. 
     Обычно доступ к файлам организуется последовательно, то есть, когда элемент считывается с помощью стандартной процедуры Read или записывается с помощью стандартной процедуры Write, текущая позиция файла перемещается к следующему по порядку элементу 
файла. Однако к типизованным и нетипизованным файлам можно организовать прямой доступ с помощью стандартной процедуры Sееk, которая перемещает текущую позицию файла к заданному элементу. Для определения текущей позиции в файле и текущего размера файла мо
жно использовать стандартные функции FileРоs и Filesize. 
     Когда программа завершает обработку файла, он должен закрываться с помощью стандартной процедуры Close. После полного закрытия файла связанный с ним внешний файл обновляется. Затем файловая переменная может быть связана с другим внешним файлом. 
     По умолчанию при всех обращениях к стандарным функциям и процедурам ввода-вывода автоматически производится проверка на наличие ошибок. При обнаружении ошибки программа прекращает работу и выводит на экран сообщение об ошибке. С помощью директив ком
пилятора {$I+} и {$I-} эту автоматическую проверку можно включить или выключить. Когда автоматическая проверка отключена, то есть когда процедура или функция была скомпилирована с директивой {$I-}, ошибки ввода-вывода, возникающие при работе программы, н
е приводят к ее останову. При этом, чтобы проверить результат выполнения операции ввода-вывода, нужно использовать стандартную функцию IОResult. 
                      Функции ввода-вывода
 ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
 Функция               Описание
 ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
 Eоf                   Возвращает для файла состояние end-of-file
                       (конец файла).

 FilePos               Возвращает текущую позицию в файле. Для
                       текстовых файлов не используется.

 FileSize              Возвращает текущий размер файла. Для
                       текстовых файлов не используется.

 IОResult              Возвращает целое значение, являющееся
                       состоянием последней выполненной операции
                       ввода-вывода.
 ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

                      Процедуры ввода-вывода
 ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
 Процедура             Описание
 ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
 Assign                Присваивает имя внешнего файла файловой
                       переменной.

 ChDir                 Выполняет смену текущего каталога.

 Close                 Закрывает открытый файл.

 Erase                 Стирает внешний файл.

 Getdir                Возвращает текущий каталог на заданном
                       диске.

 MkDir                 Создает подкаталог.

 Rеnаме                Переименовывает внешний файл.

 Rеset                 Открывает существующий файл.

 Rewritе               Создает и открывает новый файл.

 RмDir                 Удаляет пустой подкаталог.

 Seek                  Перемещает текущую позицию в файле на
                       заданный элемент. Для текстовых файлов не
                       используется.

 Truncate              Усекает размер файла до текущей позиции.
                       Для текстовых файлов не используется.
 ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

                         Текстовые файлы

     В данном разделе описываются операции ввода и вывода, использующие файловую переменную стандартного текстового типа (Text). Заметим, что в Турбо Паскале текстовый тип (тип Text) отличается от символьного типа файла. 
     При открытии текстового файла внешний файл интерпретируется особым образом: считается, что он представляет собой последовательность символов, сгруппированных в строки, где каждая строка заканчивается символом конца строки (end-of-line), который пред
ставляет собой символ перевода каретки, за которым возможно следует символ перевода строки. 
     Для текстовых файлов существует специальный вид операций чтения и записи (read и write), который позволяют вам считывать и записывать значения, тип которых отличается от символьного типа. Такие значения автоматически переводятся в символьное предста
вление и обратно. Например, Read(f,i), где i - переменная целого типа, приведет к считыванию последовательности цифр, интерпретации этой последовательности, как десятичного числа, и сохранению его в i. 
     Как было отмечено ранее, имеются две стандартных переменных текстового типа - это Input и Оutput. Стандартная файловая переменная Input - это доступный только по чтению файл, связанный со стандартным файлом ввода операционной системы (обычно это кла
виатура), а стандартная файловая переменная Оutput - это доступный только по записи файл, связанный со стандартным файлом вывода операционной системы (обычно это дисплей). 
     Так как Windows не поддерживает непосредственно ориентированный на текст ввод и вывод, файлы Input и Output по умолчанию в прикладной программе Windows не присваиваются, и любая попытка чтения из этих файлов или записи в них приведет к ошибке ввода-
вывода. Однако, если прикладная программа использует модуль WinCrt, то Input и Output будут ссылаться на прокручиваемое текстовое окно. Модуль WinCrt содержит всю логику управления, необходимую для эмуляции текстового экрана в операционной среде Windows,
 поэтому в прикладной программе, использующей модуль WinCrt, не требуется никаких приемов программирования, специфических для Windows. 
     Для некоторых из стандартных процедур и функций, список которых приведен в данном разделе, не требуется явно указывать в качестве параметра файловую переменую. Если этот параметр опущен, то по умолчанию будут рассматриваться переменные Input или Out
put, в зависимости от того, будет ли процедура или функция ориентирована на ввод или на вывод. Например, Read(х) соответствует Read(Input,х) и Write(х) соответствует Write(Output,х). 
     Если при вызове одной из процедур или функций из этого раздела вы задаете файл, этот файл должен быть связан с внешним файлов с помощью процедуры Assign и открыт с помощью процедуры Reset, Rewritе или Append. Если для ориентированной на вывод процед
уры или функции вы указываете файл, который был открыт с помощью процедуры Reset, то выведется сообщение об ошибке. Аналогично, будет ошибкой задавать для ориентированной на ввод процедуры или функции файл, открытый с помощью процедур Rewrite или Append.
 
                            Процедуры
 ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
 Процедура             Описание
 ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
 Append                Открывает существующий файл для
                       присоединения.

 Flush                 Очищает буфер выходного файла.

 Read                  Считывает одно или более значений из
                       текстового файла в одну или более
                       переменных.

 Readln                Выполняет те же действия, что и процедура
                       Rеаd, а затем делает пропуск до начала
                       следующей строки файла.

 SetTextBuf            Назначает для текстового файла буфер
                       ввода-вывода.

 Write                 Записывает в текстовый файл одно или более
                       значений.

 Writeln               Выполняет те же функции, что процедура
                       Write, а затем добавляет к файлу метку
                       конца строки (end-of-line).
 ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

                             Функции
 ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
 Функция               Описание
 ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
 Eoln                  Возвращает для файла состояние end-of-line
                       (конец строки).

 SeekEof               Возвращает для файла состояние end-of-file
                       (конец файла).

 SeekEoln              Возвращает для файла состояние end-of-line
                       (конец строки).
 ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

                      Нетипизованные файлы

     Нетипизованные файлы представляют собой описатели ввода-вывода нижнего уровня, используемые в основном для прямого доступа к любому файлу на диске, независимо от его типа и структуры. Любой нетипизованный файл описывается словом file без атрибутов. 
Например: 
     var
       DataFile: file;

     Для нетипизованных файлов в процедурах Reset и Rewrite допускается указывать дополнительный параметр, чтобы задать размер записи, использующийся при передаче файла. 
     По историческим причинам принимаемая по умолчанию длина записи равна 128 байтам. Предпочтительной длиной записи является длина записи, равная 1, поскольку это единственное значение, которое позволяет точно отразить размер любого файла (когда длина з
аписи равна 1, то в файле не могут присутствовать неполные записи, то есть записи с меньшей длиной). 
     За исключением процедур Read и Write для всех нетипизованных файлов допускается использование любой стандартной процедуры, которые допускается использовать с типизованными файлами. Вместо процедур Read и Write здесь используются соответственно проце
дуры Blockrеаd и BlockWrite позволяющие пересылать данные с высокой скростью. 
                            Процедуры
 ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
 Процедура             Описание
 ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
 BlockRead             Считывает из файла в переменную одну или
                       более запись.

 BlockWrite            Записывает одну или более запись из
                       переменной в файл.
 ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

                       Переменная FileMode

     Переменная FileMode, определенная в модуле System, задает код доступа, передаваемый в DOS для типизованных и нетипизованных файлов (не для текстовых файлов), когда они открываются с помощью процедуры Reset. 
     По умолчанию значение FileMode = 2. При этом допускается чтение и запись файла. Присваивание FileMode другого значения приводит к использованию этого режима при всех последующих вызовах Reset. 
     Примечание: Новые файлы, открываемые с помощью Rewrite, всегда открываются в режиме чтения/записи, что соответствует Filemode = 2. 
     Диапазон допустимых значений FileMode зависит от используемой версии DOS. Однако во всех версиях определены следующие режимы: 
     0:        Доступ только по чтению
     1:        Только запись
     2:        Чтение/запись

     В DOS версии 3.х определены дополнительные режимы, которые касаются в основном совместного использования файлов при работе в сети (более подробно это описывается в "Руководстве программиста по DOS"). 
                   Устройства в Турбо Паскале

     В Турбо Паскале и в операционной системе DOS внешняя аппаратура, как, например, клавиатура, устройство печати, дисплей, рассматривается, как устройства. С точки зрения программиста устройство можно рассматривать, как файл, и с ним можно работать с п
омощью того же набора стандартных процедур и функций, что и с файлом. 
     В Турбо Паскале поддерживается два типа устройств - устройства DOS и устройства для текстовых файлов. 
                         Устройства DOS

     Устройства DOS реализованы с помощью зарезервированных имен устройств, которые имеют специальный смысл. Устройства DOS полностью "прозрачны": в Турбо Паскале неизвестно даже, когда файловая переменная связана с устройством, а когда с файлом на диске
. Например, программа: 
     var
       Lst: Text;
     begin
       Assign(Lst,'LPT1');
       Rewrite(Lst);
       Writeln(Lst,'Привет...');
       Close(Lst);
     end;
 выведет строку "Привет..." на устройство печати, хотя синтаксис точно такой же, как если бы она выводилась в файл. Устройства, реализованные в операционной системе DOS, используются для однозначного ввода или вывода. Таким образом, устройства в DOS испо
льзуются обычно для текстовых файлов. В редких случаях для работы с устройствами DOS может оказаться полезным использование также нетипизованного файла. 
     Каждое из устройств DOS описывается в одном из следующих разделов. В других реализациях DOS может быть предусмотрено использование дополнительных устройств, поэтому мы не можем предусмотреть все возможные случаи для описываемых в данном руководстве 
устройств. 
        Устройства, предназначенные для текстовых файлов

     Устройства, предназначенные для текстовых файлов, используются для реализации устройств, не поддерживаемых в DOS, или для того, чтобы сделать сделать доступным набор средств, отличающийся от того, который предусмотрен для аналогичного устройства DOS
. Хорошим примером устройства, предназначенного для текстового файла, является окно CRT, реализованное с помощью стандартного модуля WinCrt. Оно обеспечивает аналогичный терминалу текстовый экран и позволяет вам создавать в Windows приколадный программы 
со "стандартным вводом-выводом" с минимальными усилиями. 
     В отличие от устройств DOS, устройства, предназначенные для вывода текстовых файлов, не имеют зарезервированных имен. Фактически, у них вообще отсутствуют имена. Вместо этого файл связывается в устройством с помощью обычной процедуры Assign. Наприме
р, стандартный модуль WinCrt реализует процедуру AssignCrt, которая связывает текстовые файлы с устройством CRT. 
                    Предописанные переменные

     Кроме процедур и функций в модуле System предусмотрен ряд предописанных переменных. 
                 Неинициализированные переменные
 ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
 Переменная      Тип                   Описание
 ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
 Input           text                   стандартный файл ввода
 Output          text                   стандартный файл вывода
 ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

                  Инициализированные переменные
 ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
 Переменная      Тип      Начальное   Описание
                          значение
 ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
 CmdLine         PChar    nil         указатель командной строки

 CmdShow         integer  0           параметр CmdShow для
                                      CreateWindow

 ErrorAddr       pointer  nil         адрес ошибки этапа
                                      выполненения

 ExitCode        integer  0           код выхода

 ExitProc        pointer  nil         процедура выхода

 FileMode        byte     2           режим открытия файла

 HeapError       pointer  nil         функция ошибки динамически
                                      распределяемой области
                                      памяти

 HeapLimits      word     1024        размер наименьшего блока
                                      динамически распределяемой
                                      области памяти

 HeapList        word     0           список сегментов динамически
                                      распределяемой области
                                      памяти

 HInstance       word     0           описатель данного экземпляра

 HPrevIns        word     0           описатель предыдущего
                                      экземпляра

 InOutRes        integer  0           буфер результата операции
                                      ввода-вывода

 PrefixSeg       word     0           префикс программного
                                      сегмента

 RandSeed        longint  0           случайное число
                                      (генерируется датчиком
                                      случайных чисел)
 ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

HInstance содержит описатель экземпляра прикладной программы или библиотеки, как это предусматривается операционной средой Windows. В программе HPrevInst содержит предыдущую реализацию прикладной программы, или 0, если предыдущей реализации нет. В библио
теке HPrevInst всегда равно 0. 
В программе CmdLine содержит указатель на завершающуюся нулем строку, которая содержит аргументы командной строки, заданные при запуске прикладной программы. В библиотеке эта переменная не определена. 
В программе CmdShow содержит значение параметра, передачу которого в ShowWindow ожидает Windows, когда прикладная программа создает основное окно. В библиотеке эта переменная всегда равна 0. 
Подсистемой управления динамически распределяемой областью памяти для реализации программ динамического распределения памяти Турбо Паскаля используются переменные HeapList, HeapLimit, HeapBlock и HeapError. Подсистема управления динамически распределяемо
й областью памяти описывается в Главе 16 ("Управления памятью"). 
Для реализации процедур выхода используются переменные ExitProc, ErrorCode и ErrorAdr. Это также описывается в Главе 18 ("Вопросы управления").. 
Переменная PrefixSeg представляет собой переменную длиной в слово, содержащую адрес префикса программного сегмента (PSP), создаваемого при выполнении программы операционной системой DOS. Полное описание PSP приведено в руководстве по операционной системе
 DOS. 
Переменная InOutRes используется встроенными программами ввода-вывода для сохранения значения, возращаемого при следующем обращении к фукнции IOResult. 
В RandSeed сохраняется начальное значение для встроенного генератора случайных чисел. Если присваивать этой переменной определенное значение, то функция Random будет генерировать заданную последовательность случайных чисел. Это может оказаться полезным в
 задачах кодирования данных, а также в статистике и моделировании. 
Переменная FileMode позволяет изменять режим доступа к открытым типизованным и нетипизованным файлам. Более подробно это описано в разделе "Ввод и вывод". 
Input и Оutput - это стандартные файлы ввода-вывода, необходимые в каждой реализации Паскаля. По умолчанию они связываются со стандартными входными и выходными файлами в Dos. Более подробно это описано в разделе "Ввод и вывод".


Яндекс цитирования