Библиотеки исполняющей системы ( RunTime Libreri, RTL) — КиберПедия 

История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...

Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...

Библиотеки исполняющей системы ( RunTime Libreri, RTL)

2022-10-29 31
Библиотеки исполняющей системы ( RunTime Libreri, RTL) 0.00 из 5.00 0 оценок
Заказать работу

Модуль System

Процедуры и функции модуля по назначению могут быть сгруппированы следующим образом:

n процедуры управления программой.

n функции преобразования.

n арифметические функции.

n порядковые процедуры и функции.

n строковые процедуры и функции.

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

n прочие процедуры и функции

n процедуры и функции поддержки ввода-вывода и операций с файлами.

 

Процедуры управления работой программы изменяют отношение следования действий при их выполнении. Здесь и в дальнейшем для процедур и функций с параметрами. спецификация формальных параметров соответствует принятой форме их описания в заголовке процедуры (функции). Необязательный параметр указывается в квадратных скобках.

 

Имя        Спецификация
Break       Завершает оператор for, while или repeat.
Continue        Продолжает выполнение оператора for, while, или repeat, начиная с итерации, прерванной процедурой Break.
Eхit            Позволяет немедленно выйти из текущего блока или модуля. Если текущим блоком является программа, ее выполнение завершается.
Наlt        Halt [(Exitcode: Word)]; останавливает выполнение программы и возвращает управление операционной системе; при вызове с параметром процедурой генерируется код завершения в соответствии с фактическим параметром – выражением с результатом типа Word. Код завершения может быть проанализирован средствами операционной системы. В DOS, например, этот код можно получить с помощью функции DosExitCode (см. модуль DOS).
RunError        RunError [(Errorcode: Byte)]; останавливает выполнение программы и генерирует код ошибки этапа выполнения, предусмотренный транслятором; при вызове с параметром код ошибки задается фактическим параметром – выражением с результатом типа Byte.

 

Функции преобразования позволяют выполнить вспомогательные операции, смысл которых поясняется таблицей

Имя      Спецификация
Chr            Chr(X: Byte): Char; возвращает символ, заданный кодом таблицы ASCII. 
High             High (X: <простой тип>):<простой тип>; в озвращает старшее значение в диапазоне аргумента простого типа.
Low          Low (X: <простой тип>):<простой тип>; возвращает младшее значение в диапазоне аргумента.
Оrd            Ord(X): Longint; возвращает порядковый код значения аргумента.
Rоund            Round(X: Real): Longint; округляет значение аргумента вещест-венного типа до значения, имеющего длинный целый тип.
Тrunс            Trunc(X: Real): Longint; усекает значение аргумента вещест-венного типа до значения, имеющего длинный целый тип.

 

Арифметические функции. Стандартные арифметические функции при компиляции программы с включенной директивой {$N+} возвращают значения расширенного типа (extended), а не типа real.

 

Имя      Спецификация
Abs             Abs (X:Integer): Integer или Abs (X:Real): Real; возвращает абсо-лютное значение аргумента. 
Аrctan          ArcTan(X: Real): Real; возвращает арктангенс аргумента.          
Cоs              Cоs (X: Real): Real; возвращает косинус аргумента.             
Eхp              Eхp (X: Real): Real; возвращает экспоненту аргумента.          
Frас             Frac(X: Real): Real; возвращает дробную часть аргумента.       
Int            Int (X: Real): Real; возвращает целую часть аргумента.         
Ln             Ln(X: Real): Real; возвращает натуральный логарифм аргумента.
Pi             Pi: Real; возвращает значение Pi (3.141592653897932385)           
Sin              Sin (X: Real): Real; возвращает синус аргумента.               
Sqr              Sqr (X:Integer):Integer или Sqr (X:Real):Real; возвращает аргумент в квадрате.           
Sqrt            Sqr t(X:Integer):Integer или Sqrt (X:Real):Real; возвращает квадратный корень аргумента.   

 

Порядковые процедуры и функции. Отличие  

Имя  Спецификация
Dес          Dec(var X[; N: Longint]); X может быть переменной порядкового типа или переменной типа P c har, если задан дополнительный параметр и директива расширения синтаксиса; в первом случае Dec(X) заменяет значение аргумента порядкового типа на предыдущее, что для переменной целого типа соответствует X:= X - 1, а во втором случае Dec(X, N) “укорачивает” строку на N символов, т.е.   X:= X - N.
Inс          Inc(var X [; N: Longint ]); X может быть переменной порядкового типа или переменной типа P c har, если задан дополнительный параметр и директива расширения синтаксиса; в первом случае Dec(X) заменяет значение аргумента порядкового типа на последующее, что для переменной целого типа соответствует X:= X + 1, а во втором случае Dec(X, N) “удлиняет” строку на N символов, т.е.   X:= X + N.
Оdd          Odd(X: Longint): Boolean; возвращает значение true, если аргумент является четным числом.
Рred         Pred(X:<порядковый тип>):<тип параметра>; возвращает предшествующее значение аргумента.
Suсс           Suсс (X:<порядковый тип>):<тип параметра>; возвращает последующее значение аргумента.      

 

Строковые процедуры и функции. Эти процедуры и функции используются для работы со стандартными строками типа String (более подробная спецификация части из них приведена в разделе 3). Строки Pchar обрабатываются средствами модуля String.

 

Имя   Спецификация
 Cоncat        Concat(s1 [, s2,..., sn]: String): String; выполняет конкатенацию последовательности строк
 Cору          Copy(S: String; Index: Integer; Count: Integer): String; возвращает подстроку строки.          
 Delete        Delete(var S: String; Index: Integer; Count: Integer); удаляет из строки подстроку.              
 Insert        Insert(Source: String; var S: String; Index: Integer); добавляет в строку подстроку.             
 Length        Length(S: String): Integer; возвращает длину строки.     
 Pоs           Pos(Substr: String; S: String): Byte; производит поиск подстроки в строке.      
 Str           Str(X [: Width [: Decimals ]]; var S:string); преобразует численное значение в его строковое представление.                      
 Val           Val(S; var V; var Code: Integer); преобразует строковое значение в его численное представление.                     

 

Процедуры и функции управления динамическим распределением памяти используются для управления динамически распределяемой областью памяти, которая занимает всю свободную память или ее часть, доступную при выполнении программы. Описание методов, используемых для управления динамически распределяемой областью памяти содержится в приложении " Управление динамически распределяемой памятью".

 

Имя   Спецификация
Dispose        Dispose(var P: Pointer [, Destructor ]); уничтожает динамическую переменную; дополнительный параметр требуется, если уничтожается динамическая переменная типа Object; не допускается использование совместно с процедурами Marc и Relese       
FrееМем        FreeMem(var P: Pointer; Size: Word); уничтожает динамическую переменную данного размера.
GetМем         GetMem(var P: Pointer; Size: Word); создает новую динамическую переменную заданного размера и устанавливает на нее переменную-указатель.                       
МахАvail       MaxAvail: Longint; возвращает размер наибольшего непрерывного свободного участка в динамически распределяемой области памяти, соответствующий размеру наибольшей динамической переменной, которая может быть выделена при обращении в MахAvail.                                  
МемАvail       MemAvail: Longint; возвращает количество имеющихся в динамически распределяемой области свободных байт.                                     
New            New(var P: Pointer [, Init: Constructor]); создает новую динамическую переменную и устанавливает на нее переменную-указатель; дополнительный параметр требуется, если создается динамическая переменная типа Object.   

Прочие процедуры и функции

Имя   Спецификация
Exclude        Exclude(var S: set of T;I:T); исключает элемент из множества.           
FillChar       FillChar(var X, Count: Word; value: Word) или... value: Char; заполняет заданное число следующих друг за другом бит значением, указанным параметром value.            
Hi             Hi(X): Byte; возвращает старший байт аргумента Х.         
Include        Include(var S: set of T;I:T); включает элемент в множество.             
Lo             Lo(X): Byte; возвращает младший байт аргумента Х.         
Моvе           Move(var Source, Dest; Count: Word); копирует заданное число непрерывных байт в указанных границах из одного места в другое.  
ParamCount      ParamCount: Word; возвращает число параметров, переданных программе в командной строке.             
ParamStr       ParamStr(Index: Word): String; возвращает параметр, заданный в командной строке.                                   
Random         Random [(Range: Word)]: Word; возвращает случайное число в диапазоне 0 £ X < Range.                
Rаndомizе      Randomize; инициализирует встроенный генератор случайных чисел случайным значением.            
SizeOf         SizeOf(Х:<тип>): Integer; возвращает число байт, занимаемых аргументом простого типа.                                      
Swap           Swap (X :<тип>): <тип>; меняет местами старший и младший байты аргумента; <тип> здесь есть Integer или Word.                                   
TypeOf         TypeOf;  указывает на таблицу виртуальных методов.
UpCase         UpCase(Ch: Char): Char; преобразует символ в верхний регистр.     

П роцедуры и функции поддержки ввода-вывода и операци й с файлами. Большая часть из перечисленных ниже процедур и функций достаточно подробно описана в разделе 5.

Имя   Спецификация
Append         Append(var f: Text); открывает существующий файл для добавления.                                      
Assign         Assign(var f; String); присваивает имя внешнего файла файловой переменной.                                 
BlockRead      BlockRead(var F: File; var Buf; Count: Word [; var Result: Word]); считывает из нетипизированного файла одну или более записей.                        
BlockWrite     BlockWrite(var f: File; var Buf; Count: Word [; var Result: Word]); записывает в нетипизированный файл одну или более записей.                        
ChDir          ChDir(S: String); выполняет смену текущего каталога.        
Close      Close(var F); закрывает открытый файл.                  
Erase          Erase(var F); стирает внешний файл.                     
Eоf            Eof(var F): Boolean или Eof [ (var F: Text) ]: Boolean для текстовых файлов; возвращает для файла состояние End-Of-File (конец файла).
FilePos        FilePos(var F): Longint; возвращает текущую позицию в файле (применение к текстовым файлам недопустимо).
FileSize       FileSize(var F): Longint; возвращает текущий размер файла (применение к текстовым файлам недопустимо); для пустого файла возвращается значение 0.          
Flush          Flush(var F: Text); очищает буфер текстового файла вывода. 
Getdir         GetDir(D: Byte; var S: String); возвращает текущий каталог на заданном диске.                                   
IОResult       IOResult: Integer; возвращает целое значение, являющееся состоянием последней выполненной операции ввода-вывода (при корректно выполненной операции возвращается 0, в противном случае – код ошибки)
MkDir           MkDir(S: String); создает подкаталог.                       
Read           Read(F, V1 [, V2,...,Vn]) или для текстовых файлов Read([ var F: Text; ]V1 [, V2,...,Vn]); считывает одно или более значений из файла в одну или более переменных.             
Readln         Readln([ var F: Text; ]V1 [, V2,...,Vn]); определена только для текстовых файлов; делает то же, что и read, и выполняет пропуск до начала следующей строки текстового файла.                                    
Rеnаме     Rename(var F: File;Newname: String); переименовывает внешний файл.             
Rеset          Reset(var F [: File; Recsize: Word]); открывает существующий файл; необязательный параметр задает размер буфера для обменных операций (по умолчанию размер буфера – 128 байт).              
Rewritе        Rewrite(var F: File [; Recsize: Word]); создает и открывает новый файл; необязательный параметр задает размер буфера для обменных операций (по умолчанию размер буфера – 128 байт).                     
RмDir          RmDir(S: String); удаляет пустой подкаталог.                
Seek           Seek(var F: File; N: Longint); перемещает текущую позицию в файле на элемент N (для текстовых файлов не используется).                               
SeekEof        SeekEof [(var F: Text)]: Boolean; возвращает Eof для текстового файла.
SeekEoln       SeekEoln [(var F: Text)]: Boolean; возвращает Eoln для текстовых файлов.                           
SetTextBuf     SetTextBuf(var F: Text; var Buf [; Size: Word]); назначает для текстового файла размер буфера ввода-вывода.                                   
Truncate       Truncate(var F: File); усекает размер файла до текущей позиции (для текстовых файлов не используется).     
Write          Write(F, V1 [, V2,...,Vn]) или для текстовых файлов Write([ var F: Text;] P1[,P2,...,Pn]); записывает в файл одно или более значений.
Writeln        Writeln([ var F: Text;] P1[, P2,...,Pn]); определена только для текстовых файлов; делает то же, что  write, но затем записывает в текстовый файл символ конца строки.

Предописанные переменные

Предописанные переменне ниже сгруппированы в соответствии с библиотекой исполняющей системы, к которой относится модуль System.

 

Глава 14. Ввод и вывод

 

В данной Главе кратко описываются стандартные (или встроенные) функции и процедуры ввода-вывода Borland Pascal. Эти процедуры и функции можно найти в модуле System.

 

 

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

 

Файловая переменная в Паскале - это любая переменная файлового типа. В Паскале имеются три класса файлов: типизированный файл, текстовый файл и нетипизированный файл.

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

 

Когда связь с внешним файлом установлена, для подготовки ее к операции ввода или вывода файловая переменная должна быть "открыта". Существующий файл можно открыть с помощью процедуры Reset, а новый файл можно создать и открыть с помощью процедуры Rewrite. Текстовые файлы, открытые с помощью процедуры Reset доступны только по чтению, а текстовые файлы, открытые с помощью процедуры Rewrite, доступны только по записи. Типизированные и нетипизированные файлы всегда допускают как чтение, так и запись, независимо от того были они открыты с помощью процедуры Reset или с помощью процедуры Rewrite.

 

Любой файл, представляет собой линейную последовательность элементов, каждый из которых имеет тип элемента (или тип записи) файла. Каждый элемент файла имеет номер. Первый элемент файла считается нулевым элементом.

 

Обычно доступ к файлам организуется последовательно, то есть, когда элемент считывается с помощью стандартной процедуры Read или записывается с помощью стандартной процедуры Write, текущая позиция файла перемещается к следующему по порядку элементу файла. Однако к типизированным и нетипизированным файлам можно организовать прямой доступ с помощью стандартной процедуры Sееk, которая перемещает текущую позицию файла к заданному элементу. Для определения текущей позиции в файле и текущего размера файла можно использовать стандартные функции FilePоs и Filesize.

 

Когда программа завершает обработку файла, он должен закрываться с помощью стандартной процедуры Close. После полного закрытия файла связанный с ним внешний файл обновляется. Затем файловая переменная может быть связана с другим внешним файлом.

 

По умолчанию при всех обращениях к стандартным функциям и процедурам ввода-вывода автоматически производится проверка на наличие ошибок. При обнаружении ошибки программа прекращает работу и выводит на экран сообщение об ошибке. С помощью директив компилятора {$I+} и {$I-} эту автоматическую проверку можно включить или выключить. Когда автоматическая проверка отключена, то есть когда процедура или функция была скомпилирована с директивой {$I-}, ошибки ввода-вывода, возникающие при работе программы, не приводят к ее останову. При этом, чтобы проверить результат выполнения операции ввода-вывода, нужно использовать стандартную функцию IОResult.

 

Для очистки ошибки, которая может произойти, вы можете вызвать функцию IOResult. Если вы этого не сделаете, и текущим состоянием является {$I+}, то из-за оставшейся ошибки IOResult следующая операция ввода-вывода завершится с ошибкой.

 

Примечание: Если вы пишете программу дл Windows и не хотите, чтобы Windows обрабатывала за вас ошибки ввода-вывода на диск или другие ошибки ввода-вывода, вызовите SetErrorMode(1).

 

 

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

 

В данном разделе описываются операции ввода и вывода, использующие файловую переменную стандартного текстового типа. Заметим, что в Borland Pascal текстовый тип (тип Text) отличается от символьного типа Char.

При открытии текстового файла внешний файл интерпретируется особым образом: считается, что он представляет собой последовательность символов, сгруппированных в строки, где каждая строка заканчивается символом конца строки (end-of-line), который представляет собой символ перевода каретки, за которым возможно следует символ перевода строки.

Для текстовых файлов существует специальный вид операций Char. Такие значения автоматически переводятся в символьное представление и обратно. Например, Read(f,i), где i - переменная целого типа, приведет к считыванию последовательности цифр, интерпретации этой последовательности, как десятичного числа, и сохранению его в i.

Как было отмечено ранее, имеются две стандартных переменных текстового типа - это Input и Оutput. Стандартная файловая переменная Input - это доступный только по чтению файл, связанный со стандартным файлом ввода операционной системы (обычно это клавиатура), а стандартная файловая переменная Оutput - это доступный только по записи файл, связанный со стандартным файлом вывода операционной системы (обычно это дисплей). Перед началом выполнения программы DOS файлы Input и Оutput автоматически открываются, как если бы были выполнены следующие операторы:

 

                Assign(Input,'');

                Reset(Input);

                Assign(Output,'');

                Rewrite(Output);

 

Так как Windows не поддерживает непосредственно ориентированный на текст ввод и вывод, файлы Input и Output по умолчанию в прикладной программе Windows не присваиваются, и любая попытка чтения из этих файлов или записи в них приведет к ошибке ввода-вывода. Однако, если прикладная программа использует модуль WinCrt, то Input и Output будут ссылаться на текущее текстовое окно. Модуль WinCrt содержит всю логику управления, необходимую для эмуляции текстового экрана в операционной среде Windows, поэтому в прикладной программе, использующей модуль WinCrt, не требуется никаких приемов программирования, специфических для Windows.

Для некоторых из стандартных процедур и функций, список которых приведен в данном разделе, не требуется явно указывать в качестве параметра файловую переменную. Если этот параметр опущен, то по умолчанию будут рассматриваться переменные Input или Output, в зависимости от того, будет ли процедура или функция ориентирована на ввод или на вывод. Например, Read(х) соответствует Read(Input,х) и Write(х) соответствует Write(Output,х).

 

Если при вызове одной из процедур или функций из этого раздела вы задаете файл, этот файл должен быть связан с внешним файлов с помощью процедуры Assign и открыт с помощью процедуры Reset, Rewritе или Append. Если для ориентированной на вывод про цедуры или функции вы указываете файл, который был открыт с по мощью процедуры Reset, то выведется сообщение об ошибке. Аналогично, будет ошибкой задавать для ориентированной на ввод процедуры или функции файл, открытый с помощью процедур Rewrite или Append.

 

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

 

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

 

var

DataFile: file;

 

Для нетипизированных файлов в процедурах Reset и Rewrite допускается указывать дополнительный параметр, чтобы задать размер записи, использующийся при передаче файла.

 

По историческим причинам принимаемая по умолчанию длина записи равна 128 байтам. Предпочтительной длиной записи является длина записи, равная 1, поскольку это единственное значение, которое позволяет точно отразить размер любого файла (когда длина записи равна 1, то в файле не могут присутствовать неполные записи, то есть записи с меньшей длиной).

 

За исключением процедур Read и Write для всех нетипизированных файлов допускается использование любой стандартной процедуры, которые допускается использовать с типизированными файлами. Вместо процедур Read и Write здесь используются соответственно процедуры Blockrеаd и BlockWrite позволяющие пересылать данные с высокой скоростью.

 

Переменная FileMode

 

Переменная FileMode, определенная в модуле System, задает код доступа, передаваемый в DOS для типизированных и нетипизированных файлов (не для текстовых файлов), когда они открываются с помощью процедуры Reset.

 

По умолчанию значение FileMode = 2. При этом допускается чтение и запись файла. Присваивание FileMode другого значения приводит к использованию этого режима при всех последующих вызовах Reset.

 

Примечание: Новые файлы, открываемые с помощью Rewrite, всегда открываются в режиме чтения/записи, что соответствует Filemode = 2.

Диапазон допустимых значений FileMode зависит от используемой версии DOS. Однако во всех версиях определены следующие режимы:

0: доступ только по чтению

1: Только запись

 

Чтение/запись

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

 

Уройства в Borland Pascal

 

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

 

 

Устройства DOS

 

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

Например, программа:

 

var

Lst: Text;

begin

Assign(Lst,'LPT1');

Rewrite(Lst);

Writeln(Lst,'Привет...');

Close(Lst);

end;

 

выведет строку "Привет..." на устройство печати, хотя синтаксис точно такой же, как если бы она выводилась в файл.

 

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

 

 

Устройство CОN

 

Устройство CОN означает консоль, посредством которой выводимая информация пересылается на экран дисплея, а вводимая информация воспринимается с клавиатуры. Если не было изменено направление ввода или вывода, стандартные файлы Input и Оutput и все файлы, которым присвоено пустое имя, ссылаются на устройство CОN.

Вводимая с устройства CОN информация является строчно-ориентированной и используется средствами редактирования строки, котоые описаны в руководстве по DOS. Символы считываются из буфера строки, а когда буфер становится пустым, вводится новая строка.

При нажатии клавиш Ctrl+Z генерируется символ конца файла (end-of-file), после которого функция Eоf возвращает значение Truе.

Устройства CОМ1 и CОМ2

 

Коммуникационными портами (CОМ1 и CОМ2) являются устройства, представляющие собой два последовательных коммуникационных порта. Вместо CОМ1 можно использовать синоним AUХ.

 

 

Устройство NUL

 

Нулевое устройство (NUL) игнорирует любую попытку записи на него и немедленно генерирует признак конца файла при попытки считывания с этого устройства. Его следует использовать, если вы не хотите создавать отдельный файл, а в программе требуется указать имя входного или выходного файла.

 

В общем случае следует избегать использования устройств DOS под Windows и применять функции ввода-вывода API Windows. Некоторые устройства, такие как CON, не будут правильно работать. Другие устройства могут работать, но результаты могут оказаться не теми, что вы ожидаете. Например, если вы используете LPT1, ваша распечатка может выводиться, прерывая другое задание печати. Поэтому надежнее использовать функции API Windows.

 

 

Использование модуля CRT

Чтобы использовать модуль Crt, его нужно указать в операторе uses вашей программы: uses Crt;

При инициализации модуля Crt для того, чтобы можно было обращаться к CRТ, вместо стандартных файлов ввода и вывода DOS назначаются стандартные входные и выходные текстовые файлы. Это соответствует выполнению в начале программы следующих операторов: AssignCrt(Input); Reset(Input);

AssignCrt(Output); Rewrite(Output);

Это означает, что переопределение входных и выходных файлов далее не допускается до тех пор, пока для данных файлов не будет выполнено обратного переназначения и не произойдет переход к стандартному вводу и выводу с помощью выполнения операторов:

 

Assing(Input,''); Reset(Input);

Assing(Output,''); RewriteOutput);

 

 

Окна CRT

 

Модуль Crt поддерживает простую, но, тем не менее, мощную форму использования окон. Процедура Window позволяет вам определить в каком-либо месте экрана окно. При записи в это окно оно ведет себя точно также, как целый экран. При этом остальная часть экрана остается нетронутой. Другими словами, доступ к экрану вне окна отсутствует. Внутри окна можно добавлять и удалять строки, при этом курсор возвращается к правому краю и при достижении курсором нижней строки текст продвигается вверх.

Все координаты экрана, кроме тех, которые используются для определения окна, относятся к текущему окну. Координата экрана (1,1) соответствует левому верхнему углу экрана. По умолчанию окном считается весь экран.

 

Специальные символы

 

При записи в выходной файл или в файл, который назначен для модуля Crt, специальное значение имеют следующие управляющие символы:

Символ Название Описание
#7 Звонок (BELL) Вызывает звуковой сигнал, издаваемый с помощью внутреннего динамика.
#8 Обратный пробел BS Возврат на одну позицию. Вызывает перемещение курсора влево на одну позицию. Если курсор уже находится у левого края текущего окна, то никаких действий не производится
#10 Перевод строки LF Перемещает курсор на одну строку вниз. Если курсор уже находится на нижней строке окна, то окно пролистывается вверх на одну строку.
#13 Возврат каретки BS Возвращает курсор с левому краю текущего окна.

 

 

Ввод строк

 

При чтении из входного файла (Input) или из текстового файла, который назначен для модуля Crt, текст вводится по одной строке. Строка запоминается во внутреннем буфере текстового файла и когда переменные считываются, то в качестве источника используется этот буфер. Каждый раз когда буфер становится пустым, вводится новая строка. При вводе строк можно использовать следующие клавиши редактирования:

Клавиша редактирования Описание
Backsрасе Удаляет последний введенный символ
Esс Удаляет всю вводимую строку
Enter Прекращает ввод строки и записывает метку конца строки (возврат каретки/перевод строки) в буфере.
Ctrl+S Действует также, как Backspace.
Ctrl+D Извлекает один символ из последней вводимой строки и выводит его на экран.
Ctrl+F Восстанавливает на экране последнюю вводимую строку.
Ctrl+Z Завершает ввод строки и генерирует символ конца файла.
Сtrl-Z Генерирует символ конца файла и завершает строку ввода.

 

 

Ctrl+Z будет генерировать конец файла в том случае, если переменная CheckEOF установлена в True (по умолчанию False).

Для проверки состояния клавиатуры и ввода отдельных символов под управлением программы используйте функции KeyРressed и RеаdKey.

Использование модуля WinCrt

 

Чтобы использовать модуль WinCrt, нужно просто указать в вашей программе оператор uses, как и при использовании любого другого модуля.

 

uses WinCrt;

 

По умолчанию стандартные текстовые файлы Input и Output, определенные в модуле System, не присваиваются, и все обращения к процедурам Read, Readln, Write или Writeln без указания файловой переменной приводят к ошибке ввода-вывода. Однако, когда программа использует модуль WinCrt, код инициализации данного модуля присваивает Input и Output стандартные текстовые файлы, чтобы ссылаться на окно, эмулирующее текстовый экран. Это соответствует выполнению в начале программы следующих операторов:

 

AssignWinCrt(Input); Reset(Input);

AssignWinCrt(Output); Rewrite(Output);

 

Когда в программе выполняются процедуры Readln, Read, Write или Writeln, в оперативной области Windows открывается окно CRT. По умолчанию заголовком окна CRT будет полное имя маршрута файла.EXE программы. Когда программа завершает работу (управление достигает конечного зарезервированного слова end), заголовок окна CRT изменяется на "(Inactive nnnnn)", где nnnnn - заголовок окна в его активном состоянии.

 

Заметим, что хотя программа и завершила работу, окно остается на экране, благодаря чему пользователь может проверить вывод программы. Аналогично другим прикладным программам Windows, программа не завершается полностью,  пока пользователь не закроет окно.

 

Более полно управлять жизненным циклом окна CRT вам позволяют подпрограммы InitWinCrt и DoneWinCrt. При обращении к первой из них без ожидания первого вызова процедур Readln, Read, Write или Writeln немедленно создается окно CRT. Аналогично, обращение к DoneWinCrt немедленно уничтожает окно CRT, не ожидая, пока его закроет пользователь.

 

Окно CRT представляет собой прокручиваемое "панорамное" окно на виртуальном текстовом экране. По умолчанию виртуальный экран имеет размеры 80 столбцов на 25 строк, но реальный размер окна CRT может быть меньше. Если этот размер меньше, пользователь для перемещения области окна по текстовому экрану большего размера может использовать полосы прокрутки окна или клавиши управления курсором. Это особенно полезно для "обратной прокрутки" и проверки ранее написанного текста. По умолчанию панорамное окно отслеживает курсор текстового экрана. Другими словами, панорамное окно автоматически прокручивается, чтобы обеспечить постоянную видимость курсора. Установив переменную AutoTracking в значение False, вы можете запретить средство автоматической прокрутки.

 

Размеры виртуального экрана определяются переменной ScreenSize. Присвоив этой переменной новые размерности перед тем, как ваша программа создает окно CRT, вы можете изменить размеры виртуального экрана. Когда окно создается, в динамически распределяемой памяти выделяется буфер экрана. Размер этого буфера равен произведению ScreenSize.Y на ScreenSize.Y и не может превышать 65520 байт. Ответственность за присваивания значений этим переменным возлагается на вас (они не должны превышать указанную границу). Если, например, вы присвоите ScreenSize.X значение 64, то наибольшим допустимым значением для ScreenSize.Y будет 1023.

В любой момент в процессе выполнения программы, использующей модуль WinCrt, пользователь может прервать выполнение, выбрав в меню Control (Управление) окна CRT команду Close (Закрытие), дважды щелкнув кнопкой "мыши" в рамке меню Control или нажав клавиши Alt+F4. Аналогично, в любой момент для прерывания прикладной программы пользователь может нажать Ctrl+C или Ctrl+Break, при этом окно переводится в неактивное состояние. Установив переменную CheckBreak в значение False, вы можете запретить эту возможность.

 

Специальные символы

При записи в выходной файл (Output) или в файл, который назначен для окна CRT, специальное значение имеют следующие управляющие символы:

 

Символ Название Описание
#7 Звонок BELL   Вызывает звуковой сигнал, издаваемый с помощью внутреннего динамика.
#8 Обратный пробел BS Возврат на одну позицию. Вызывает перемещение курсора влево на одну позицию. Если курсор уже находится у левого края текущего окна, то никаких действий не производится.
¦#10 Перевод строки LF Перемещает курсор на одну строку вниз. Если курсор уже находится на нижней строке окна, то окно пролистывается вверх на одну строку.
#13 Возврат каретки CR Возвращает курсор с левому краю текущего окна.

 

 

Ввод строк

 

При чтении из входного файла (Input) или из текстового файла, который назначен для окна CRT, текст вводится по одной строке. Строка запоминается во внутреннем буфере текстового файла и когда переменные считываются, то в качестве источника используется этот буфер. Каждый раз когда буфер становится пустым, вводится новая строка.

 

При вводе строк в окне CRT можно использовать следующие клавиши редактирования: Вacksрасе - удаляет последний введенный символ, Esс - удаляет всю вводимую строку, Enter - прекращает ввод строки и з


Поделиться с друзьями:

Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...

Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...

Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.165 с.