TURBO PASCAL

Новости       

Программы

Turbo Pascal

Игры

Документация

"Странности"

FAQ

Ссылки

Благодарности 

Гостевая книга

Спонсор

От автора

 

ПРИЛОЖЕНИЕ 4

Модуль  system

Модуль SYSTEM является основной библиотекой  Turbo   Pascal. Он   реализует  низкоуровневые  программы  для  всех встроенных возможностей ,  таких как ввод-вывод,  обработка  строк, эмуляция арифметического сопроцессора 8087, т.е. обработка операций с  плавающей точкой, управление оверлеями и динамическое распределение  памяти.  Модуль  System  используется  автоматически любым модулем или программой и никогда не требуется указывать его в утверждении uses.

П.4.1. Стандартные процедуры и функции

В данном  разделе  описываются  все  стандартные  процедуры  и функции,  использующиеся в  Turbo  Pascal. Чтобы получить более полную информацию о нужной процедуре или функции, рекомендуется в среде Turbo  Pascal набрать соответствующее имя и нажать Ctrl-F1. Таким образом будет вызвано разъяснение (помощь), относящееся к указанному имени и небольшой пример. Некоторые из этих разъяснений (в переводе на русский язык) приведены в данном приложении, в разделе «Обработка строк».

П.4.1.1. Процедуры управления обработкой

Exit - позволяет немедленно выйти из текущего блока.

Halt -останавливает выполнение программы и возвращает в операционную систему.

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

П.4.1.2. Динамическое распределение памяти

Эти процедуры    и   функции   используются   для   управления кучей - областью памяти,  которая занимает  всю  свободную  память, остающуюся  при  выполнении  программы в среде MS DOS.  Полное  описание  методов, используемых для  управления  динамически  распределяемой  областью памяти, приводится в разделе "Менеджер кучи" в [5] "Распределение оперативной памяти".

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

Dispose - уничтожает динамическую переменную.

FreeMem - уничтожает динамическую переменную данного размера.

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

Mark - записывает в переменной-указателе состояние кучи.

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

Release - возвращает кучу в заданное состояние.

П.4.1.2.2. Функции динамического распределения памяти

MaxAvail - возвращает размер     наибольшего      непрерывного свободного   блока  кучи,  соответствующей  размеру наибольшей динамической переменной,  которая может быть распределена в момент вызова MaxAvail.

MemAvail - возвращает количество  имеющихся  в  куче свободных байт.


П.4.1.3. Функции преобразования

Процедуры Pack и UnPack, определенные в стандартном Паскале, в Turbo Pascal не реализованы.

Chr - возвращает символ с заданным порядковым номером.

Ord - возвращает порядковый    номер,    имеющий    значение порядкового типа.

Round - округляет значение вещественного типа до значения типа LongInt.

Trunc - усекает значение  вещественного  типа до значения типа LongInt.

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

Примечание: При компиляции в режиме числового сопроцессора, {$N+,E+}, возвращаемые значения в программах с плавающей точкой в модуле System (Sqrt, Pi, Sin и т.д.) имеют тип Еxtended вместо Real.

Abs - возвращает абсолютное значение аргумента.

ArcTan - возвращает арктангенс аргумента.

Cos - возвращает косинус аргумента.

Exp - возвращает экспоненту аргумента.

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

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

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

Pi - возвращает значение числа Pi    {3.1415926535897932385}

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

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

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

П.4.1.5. Обработка данных порядкового типа

П.4.1.5.1. Процедуры порядкового типа

Dec - уменьшает значение переменной.

Inc - увеличивает значение переменной.

П.4.1.5.2. Функции порядкового типа

Odd - проверяет, является ли аргумент нечетным числом.

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

Succ - возвращает его последующее значение.

П.4.1.6. Обработка строк

П.4.1.6.1. Строковые процедуры

Delete - удаляет подстроку из строки.

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

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

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

П.4.1.6.2. Строковые функции

Concat - выполняет конкатенацию последовательности строк.

Copy - возвращает подстроку из строки.

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

Pos - производит поиск подстроки в строке.

Поясним строковые процедуры и функции более подробно.

function Pos(Substr: String; S: String): Byte; - производит поиск подстроки Substr в строке S. Substr и S - выражения типа String. Функция возвращает целочисленное значение, которое является номером (индексом) первого символа подстроки Substr внутри S. Если Substr не найден, Pos возвращает ноль.

{ Пример из HELP - Pos.PAS}

var S: String;

begin

  S := '   123.5';

  { Преобразование пробелов в нули }

  while Pos(' ', S) > 0 do

    S[Pos(' ', S)] := '0';

  Writeln(‘ S= ‘, S)

end.

procedure Delete(var S: String; Index: Integer; Count:Integer); - удаляет подстроку, начиная с символа номер Index длиной Count  из строки S. S - переменная типа String. Index и Count - выражения целочисленного типа. Если значение Index больше, чем длина строки S, никакие символы не удаляются. Если значение Count больше, чем оставшихся символов, начиная с позиции Index, в строке S, то удаляются все эти символы до конца строки. Результат записывается в ту же строку S.

{Delete.PAS}

var

   s: string;

 begin

   s := 'Honest Abe Lincoln';

   Delete(s,8,4);

   Writeln(s); { 'Honest Lincoln' }

 end.

function Copy(S: String; Index: Integer; Count: Integer): String; - копирует подстроку из строки S, начиная с символа номер Index длиной Count. S - переменная типа String. Index и Count - выражения целочисленного типа. Если значение Index больше, чем длина строки S, то возвращается пустая строка. Если значение Count больше, чем оставшихся символов, начиная с позиции Index, в строке S, то копируются все эти символы до конца строки.

{Copy.PAS}

var S: String;

begin

  S := 'ABCDEF';

  S := Copy(S, 2, 3); { 'BCD' }

end.

function Length(S: String): Integer; - возвращает значение динамической (фактической) длины строки S.

{Length.PAS}

var

  S: String;

begin

  Readln (S);

  Writeln('"', S, '"');

  Writeln('length = ', Length(S));

end.

function Concat(s1 [, s2,..., sn]: String): String; Каждый параметр - выражение типа String. Результат - конкатенация всех параметров. Если возникающая в результате строка длиннее, чем 255 символов, то она усекается до 255 символов. Использование знака конкатенации  плюс (+) возвращает тот же самый результат, как и использование функции Concat:

S := 'ABC' + 'DEF';

  {Concat.PAS}

var

  S: String;

begin

  S := Concat('ABC', 'DEF'); { 'ABCDEF' }

end.

procedure Insert(Source: String; var S: String; Index: Integer); Источник Source - выражение типа String. S - переменная типа String  любой длины. Индекс Index - выражение целочисленного типа. Происходит вставка источника Source в S, начиная с позиции Index. Если возникающая в результате строка S длиннее, чем 255 символов, то она усекается до 255 символов.

 {Insert.PAS}

var

  S: String;

begin

  S := 'Honest Lincoln';

  Insert('Abe ', S, 8);  { 'Honest Abe Lincoln' }

end.

procedure Str(X [: Width [: Decimals ]]; var S:string); - преобразовывает числовое значение X в то же самое представление String, которое было бы при выводе с помощью оператора Write.

 {Str.PAS}

function IntToStr(I: Longint): String;

{ Преобразование любого целочисленного типа (LongInt) в тип  string }

var

  S: string[11];

begin

  Str(I, S);

  IntToStr := S;

 end;

begin

  Writeln(IntToStr(-5322));  

{Результат аналогичен  следующему: I:=-5322;   Writeln(I);}

end.

procedure Val(S; var V; var Code: Integer); - преобразовывает значение S типа string в числовое представление V, как это происходит при чтении из текстового файла с помощью оператора Read. Code - переменная типа Integer, возвращает номер ошибочной позиции при преобразовании строки в число.

{Val.PAS}

var I, Code: Integer;

    PStr:String;

begin

  PStr:='12345';

  Val(PStr, I, Code);

  if code <> 0 then   Writeln('Ошибка в позиции: ', Code)

  else    Writeln('Значение = ', I);

     { Результат: Значение = 12345}

  PStr:='123.45';

  Val(PStr, I, Code);

  if code <> 0 then   Writeln('Ошибка в позиции: ', Code)

  else   Writeln('Значение = ', I);

   { Результат - Ошибка в позиции: 4  Т.к. объявлено, что I : Integer;}

end.

П.4.1.7. Функции для работы с указателями и адресами

Addr - возвращает адрес заданного объекта.

Cseg - возвращает текущее значение регистра CS.

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

Ofs - возвращает смещение заданного объекта.

Ptr - преобразует базовый адрес сегмента и смещение  в значение типа указатель.

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

SPtr - возвращает текущее значение регистра SP.

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

П.4.1.8. Другие процедуры

FillChar - заполняет заданное число последовательных байт указанным значением.

Move - копирует заданное число последовательных байт из источника в приемник.

Randomize - инициализирует случайным значением встроенный генератор случайных чисел.

П.4.1.9. Другие функции

Hi - возвращает старший байт аргумента.

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

ParamCount - возвращает число параметров, переданных программе в командной строке.

ParamStr - возвращает заданный параметр командной строки.

Random - возвращает случайное число.

SizeOf - возвращает число байт, занимаемых аргументом.

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

UpCase - преобразует символ в прописной.

П.4.2. Ввод и вывод

В данном  разделе  кратко описываются стандартные (встроенные) функции и процедуры ввода-вывода Turbo Pascal.

П.4.2.1. Введение во ввод-вывод

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

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

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

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

Когда начинается выполнение  программы,  всегда  автоматически открываются  стандартные  текстовые  файловые  переменные  Input  и Output (ввод и вывод).  Input - это  доступный  только  для  чтения файл,  связанный с клавиатурой,  а Output - это доступный только для записи файл, связанный с дисплеем.

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

Обычно доступ к файлам организуется последовательно,  то есть, когда элемент считывается с помощью стандартной процедуры  Read или записывается с помощью стандартной процедуры Write, текущая позиция файла перемещается к следующему по порядку элементу файла. Однако к типизированным  и  не типизированным  файлам  можно  организовать прямой доступ с помощью стандартной  процедуры  Seek,  которая  перемещает текущую позицию файла к заданному элементу. Текущую позицию в файле и текущий размер  файла  можно  определить  с  помощью  стандартных функций FilePos и FileSize.

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

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

П.4.2.1.1. Процедуры ввода-вывода

Assign - присваивает имя внешнего файла файловой переменной.

ChDir - изменяет текущий каталог файлов.

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

Erase - удаляет внешний файл.

GetDir - возвращает имя текущего каталога на заданном диске.

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

Rename - переименовывает внешний файл.

Reset - открывает существующий файл.

Rewrite - создает и открывает новый файл.

RmDir - удаляет пустой подкаталог.

Seek - передвигает текущую позицию файла на указанную компоненту (не используется с текстовыми файлами).

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

П.4.2.1.2. Функции ввода-вывода

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

FilePos -возвращает текущую позицию в файле (не используется с текстовыми файлами).

FileSize - возвращает текущий размер файла  (не используется с текстовыми файлами).

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

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

В этом разделе описываются операции ввода/вывода, использующие файловую  переменную  стандартного  типа  Text.  Заметим,   что   в Turbo Pascal тип Text отличается от типа file of char.

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

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

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

               Assign(Input,''); Reset(Input);

               Assign(Output,''); Rewrite(Output);

Аналогично, после выполнения программы эти файлы автоматически закрываются.

Если программа  использует  стандартный  модуль Crt,  то файлы Input и Output не  будут  по  умолчанию  относиться  к  стандартным файлам  ввода/вывода.

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

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

П.4.2.2.1. Процедуры

Append - открывает существующий файл для добавления записей.

Flush - освобождает буфер файла вывода.

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

Readln - выполняет те же действия, что и Read, а потом делает пропуск до начала следующей строки файла.

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

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

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

П.4.2.2.2. Функции

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

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

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

П.4.2.3. НЕ ТИПИЗИРОВАННЫЕ файлы

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

 Любой не типизированный  файл  объявляется  со  словом  file  без атрибутов, например:               var Datafile : file;

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

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

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

П.4.2.3.1. Процедуры

BlockRead - считывает в переменную одну или более записей.

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

П.4.2.4. Переменная FileMode

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

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

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

     0 : только чтение

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

     2 : чтение/запись

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

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

П.4.3. Устройства в Turbo Pascal

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

П.4.3.1. Устройства DOS

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

               var Lst : Text;

               begin

                  Assign(Lst, 'LPT1');

                  Rewrite(Lst);

                  Writeln(Lst, 'Hello World ...');

                  Close(Lst);

               end.

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

Устройства, реализованные    в   операционной   системе   DOS, используются для одновременного ввода или вывода.

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

П.4.3.2. Устройство CON

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

 Вводимая с   устройства   CON   информация   является   строчно   - ориентированной и  использует   средства   редактирования   строки, которые описаны в руководстве по DOS. Символы считываются из буфера строки, а когда буфер становится пустым, вводится новая строка. При нажатии    клавиш   CTRL-Z   генерируется   символ   конца   файла (end-of-file), после которого функция  eof  будет возвращать значение True.

П.4.3.3. Устройства LРT1, LРT2, LРT3

В качестве   возможного    построчного    устройства    печати допускается использование трех устройств печати.  Если присоединено одно устройство печати,  на него обычно ссылаются как на устройство LРT1. Для этого устройства можно также использовать синоним PRN.     Построчное устройство печати - это устройство, предназначенное только для  вывода.  При любой попытке использовать процедуру Reset для открытия файла, связанного с одним из этих устройств, немедленно генерируется признак конца файла.

Примечание: Стандартный  модуль  Printer  описывает  текстовую файловую переменную  с  именем  Lst  и  устанавливает  ее  связь  с устройством  LРT1.  Чтобы обеспечить вывод какой-либо информации из вашей программы на устройство печати, включите в предложение uses в своей программе модуль Printer,  а для вывода используйте процедуры Write(Lst, ...) или Writeln(Lst,...).

П.4.3.4. Устройство NUL

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

П.4.3.5. Устройство, предназначенное для текстовых файлов

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

 

На первую страницу

Rambler's Top100 PROext: Top 1000
Rambler's Top100

(с) Все права защищены.

По всем интересующим вопросам прошу писать электронный адрес

Hosted by uCoz