Другиетипыданных

Работа с текстовыми файлами

Тема 11

Текстовый файл – это файл, содержащий последовательность символов, разбитую на строки.

Для создания текстового файла необходимо прежде всего объявить соответствующую файловую переменную в разделе var как переменную типа TextFile. Формат:

var <имя файловой переменной >: TextFile;

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

AssignFile (<имя файловой переменной>, '<имя текстового файла>');

Пример. var f: TextFile;

...

AssignFile(f, 'MyFile.txt');

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

Rewrite <имя файловой переменной>;

Пример. Rewrite (f);

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

Reset <имя файловой переменной>;

Пример. Reset (f);

Для работы с текстовым файлом (т.е. для записи данных в текстовый файл и для чтения данных из текстового файла) используют процедуры ввода-вывода Write, Writeln, Read, Readln соответствующего формата., т.е. Write (<имя файловой переменной>, <список вывода>); Writeln...; Read...; Readln (см п. 2.3).

Пример. Write (f, a:3, b:4);

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

CloseFile <имя файловой переменной>;

Пример. CloseFile (f);

Теперь можно рассмотреть вопрос о выводе результата работы консольного приложения на принтер. Специальная процедура procedure AssignPrn(var F: Text); отождествляет файловую переменную F с текущим принтером. Чтобы получить распечатку результатов работы консольного приложения, необходимо имя этой переменной указать первым параметром в списке процедуры Write; или Writeln;. Кроме того, необходимо в разделе программы uses указать имя подключаемого библиотечного модуля Printers.

Пример. Program Printing;

Uses Printers;

Var Prints: TextFile;

Begin

AssignPrn(Prints);

Rewrite(Prints);

Writeln(Prints, ‘Hello!’);

CloseFile(Prints);

End.

Указатели: указатель представляет собой переменную, значением которой является ад­рес начала размещения некоторых данных в основной памяти. Иными сло­вами, указатель содержит ссылку на соответствующий объект. Указатели могут ссылаться на данные любого типа. Переменные типа «указатель» являются, т.е. их значения определяются во время выполнения программы.

Различают указатели типизированные и нетипизированные. Типизированный указатель может ссылаться на данные определенного типа, который задается при объявлении указателя или описании типа указателя. При этом исполь­зуется символ ^ перед именем типа адресуемых данных. Формат описания типа для типизированного указателя:

Type <тип указателя> = ^<тип адресуемых данных>;

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

Пример. Объявление переменных-указателей.

Var p1: Pointer; p2: ^ integer;

Переменная p2 может адресовать данные типа integer, а переменная p1 – данные любого типа.

С помощью указателя можно получить доступ к значению адресуемых данных. Для этого используется разыменовывание указателя — справа от имени указателя приписывается символ ^.

Указателю можно присвоить значение Nil, тогда данный указатель ни на что не будет указывать. Для определения адреса объекта, к которому можно обратить­ся с помощью указателя, используется адресная операция @, записываемая перед именем этого объекта.

Пример. Var p: ^integer; n, k: integer;

...

p:=@ n;

n:=100; k:= p ^+10;

После выполнения оператора присваивания с @ n в правой части указатель p ссылается на целочисленную переменную n и позволяет обращаться к ней с помощью конструкции p^. После выполнения трех приведенных операторов значение переменной k будет равно 110.

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

Описание данных процедурного типа похоже на заголовок процедуры или функции, в котором отсутствует имя подпрограммы. Разрешается использо­вать методы (подпрограммы, объявленные в классах), при описании кото­рых указываются слова ofobject.

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

Для описания переменной вариантного типа используется слово variant. Этой переменной можно присваивать значения целочисленных (кроме int64), вещественных, символьных, строковых и логических типов. Все эти типы считаются совместимыми с типом variant и при необходимости преобразования типов выполняются автоматически.

Пример. Var v1, v2: variant;

k: integer; x: real;

...

k:=10; v1:=k;

x:=23.17; v 2:= x; v 1:= x +0.5;


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: