Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

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




Процедура: Append (var Vf: Text); Модуль: System

Описание: Процедура открывает внешний файл с доступом только для записи и устанавливает указатель в конец файла. Vf - файловая переменная, ассоциированная с файлом при помощи процедуры AssignFile. Если файл Vf уже открыт, то при вызове процедуры Append он закрывается и открывается вновь. Если файл не существует, то происходит ошибка. Если в последнем 128-байтовом блоке файла присутствует символ Ctrl+'Z' (ASCII код 26), то файловый указатель устанавливается так, чтобы следующий добавляемый в файл символ был записал поверх первого Ctrl+'Z' в блоке. Таким образом, текст может быть конкатенирован к файлу, который завершается на Ctrl+'Z'.

Пример:
var
Vf: TextFile;
begin
AssignFile(Vf, 'MyFile.txt');
Append(Vf);
Writeln(Vf, 'Данная строка записывается в конец файла');
Flush(Vf);
CloseFile(Vf);
end;

Процедура: AssignPrn (var Vf: Text); Модуль: Printers

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

Пример:
var
Vf: TextFile;
begin
AssignPrn(Vf);
Rewrite(Vf);
Writeln(Vf, 'Этот текст будет напечатан!');
CloseFile(Vf);
end;

Процедура: Flush (var Vf: Text); Модуль: System

Описание: Процедура очищает буфер текстового файла, открытого для записи с помощью Rewrite или Append. Параметр Vf представляет собой файловую переменную, связанную с текстовым файлом. Вызов данной процедуры гарантирует, что вся информация, записываемая в файл Vf, действительно будет записана во внешний файл.

Пример:
var
Vf: TextFile;
begin
AssignFile(Vf, 'MyFile.txt');
Append(Vf);
Writeln(Vf, 'Данная строка записывается в конец файла');
Flush(Vf);
CloseFile(Vf);
end;

Процедура: Read ([var Vf: Text] V1[V2,..., Vn]); Модуль: System

Описание: Процедура читает одно или больше значений из файла в соответствующее количество переменных. Запись упакованной строки: Имеет такой же результат, как для строки, длина которой равна количеству элементов упакованной строки. Запись значений булева типа: Имеет такой же результат, как для строк 'True' или 'False'

Процедура: Readln ([var Vf: Text] V1[V2,..., Vn]); Модуль: System

Описание: Процедура читает строку текста из файла и переводит указатель на начало следующей строки. Вызов Readln(Vf) без параметров просто переводит указатель в начало следующей строки.

Процедура: SetTextBuf (var Vf: Text [; var Size: Integer]); Модуль: System

Описание: Процедура устанавливает буфер ввода/вывода для текстового файла. Каждая файловая переменная текстового файла имеет внутренний 128-байтовый буфер чтения/записи. Данный буфер не играет роли в большинстве приложений, однако, если программа жестко привязана к вводу/выводу, то наличие буфера позволяет увеличить ее эффективность за счет уменьшения обращений к диску и непроизводительных затрат системы. Процедура SetTextBuf устанавливает для текстового файла, связанного с файловой переменной Vf, взамен внутреннего 128-байтового буфера, буфер указанный в параметре Buf, размером Size байт. Если переменная Size опущена, то размер принимается равным SizeOf(Buf). Новый заданный буфер будет ассоциирован с файлом Vf до вызова функции AssignFile для данного файла. Процедура SetTextBuf вызывается сразу после вызова процедур Reset, Rewrite или Append. Если до вызова SetTextBuf над файлом производились операции ввода/вывода, то из-за смены буфера информация может быть потеряна.

Пример:
var
Vf1, Vf2: TextFile;
Buf: array[1..1024] of Char;
C: Char;
begin
AssignFile(Vf1, 'read.txt');
Reset(Vf1);
SetTextBuf(Vf1, Buf); //устанавливает 1Кб буфер для чтения файла
AssignFile(Vf2, 'write.txt');
Rewrite(Vf2);
while not Eof(Vf1) do
begin
Read(Vf1, C);
Write(Vf2, C);
end;
CloseFile(Vf1);
CloseFile(Vf2);
end;

Процедура: Write ([var Vf: Text;] P1[, P2,..., Pn ]); Модуль: System

Описание: Процедура записывает одно или больше значений в текстовый файл, связанный с файловой переменной Vf. Файл, в который записываются данные, должен быть открыт для записи. Если параметр Vf опущен, то действие процедуры применяется к стандартному Файлу вывода. В параметрах P, указывается значение, которое должно быть записано в файл. Значения параметров Pn должны иметь один из следующих типов: - Char; - целочисленный тип (Byte, ShortInt, Word, LongInt, Cardinal); - значение с плавающей запятой (Single, Real, Double, Extended, Currency); - строковый тип (PChar, AnsiString, ShortString); - тип упакованной строки; - булевый тип (Boolean, Bool). Записываемый параметр должен иметь форму: OutExpr[:MinWidth [:DecPlaces]], где OutExpr - выводимое выражение, MinWidth, DecPlaces - параметры форматирования. Параметр MinWidth: Integer определяет минимальную ширину поля (должна быть >0). Параметр DecPlaces: Integer определяет количество десятичных позиций после запятой (для фиксированного вывода чисел с плавающей запятой). Данный параметр должен указываться только для значений действительных типов, и только тогда, когда определен параметр MinWidth. Значение DecPlaces должно быть больше или равно 0. Запись значений символьного типа. Если опущен параметр MinWidth, то в файл записывается указанный символ, иначе необходимая длина поля достигается записью дополнительных пробелов. Запись значений целочисленного типа. Если опущен параметр MinWidth, то в файл записывается значение один к одному, иначе недостающее количество позиций заполняется пробелами. Запись значения действительного типа. Формат записи зависит от наличия параметра DecPlaces. Параметр MinWidth определяет суммарное количество символов. Если параметр MinWidth опущен, то принимается значение по умолчанию (17 символов). Если MinWidth<8, то значение этого параметра принимается равным 8. Параметр DecPlaces показывает, сколько символов должно быть записано после десятичного разделителя. Если DecPlaces>11, то принимается значение по умолчанию равное 11. Если параметр DecPlaces опущен или имеет отрицательное значение, то записывается десятичная строка с плавающей запятой в экспонентальном виде: [ /-]<цифра>.<десятичная часть>E[+/-]<экспонента> Если значение DecPlaces присутствует, а значение указанное в параметре MinWidth превышает количество выводимых символов, то недостающее количество заполняется пробелами перед числом.

Пример:
&nbsp-12.3456789:1 = -1.2E+0000
&nbsp-12.3456789:8 = -1.2E+0000
&nbsp-12.3456789:12 = -1.234E+0001
&nbsp-12.3456789:22 = -1.2345678900000E+0001
&nbsp-12.3456789:3:1 = -12.3
&nbsp-12.3456789:3:5 = -12.34567
&nbsp-12.3456789:15:5 = -12.34567

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

Процедура: WriteLn ([var Vf: Text;] P1[, P2,..., Pn ]); Модуль: System

Описание: Действие данной процедуры аналогично процедуре Write для текстовых файлов, но, в отличие от нее, процедура Writeln добавляет к записываемому тексту маркер конца строки. Если при вызове Writeln параметры Pn опущены, то процедура просто записывает в файл маркер конца строки.

Функция: Eof [(var Vf)]: Boolean; Модуль: System

Описание: Функция определяет, стоит ли файловый указатель в конце файла. Vf - файловая переменная, связанная с текстовым файлом. Eof(Vf) возвращает True, когда указатель текущей позиции стоит на последнем символе файла, или если файл не содержит данных (пустой), в противном случае возвращается False. Функция Eof для текстовых файлов аналогична функции Eof для типизированных файлов, за исключением того, что для текстовых файлов параметр Vf может быть опущен, и тогда функция будет обращаться к стандартному файлу ввода.

Функция: SeekEof [(var Vf: Text)]: Boolean; Модуль: System

Описание: Функция определяет, достигнут ли конец файла. Если указатель стоит в конце файла, то функция возвращает True, а иначе - False. Данная функция может применяться только к открытым текстовым файлам.

Пример:
var
Vf1, Vf2: TextFile;
i, j: Integer;
begin
AssignFile(Vf1, 'work1.txt');
Rewrite(Vf1); //создает и открывает файл 'work1.txt'
AssignFile(Vf2, 'work2.txt');
Rewrite(Vf2); //создает и открывает файл 'work2.txt'
Writeln(Vf1, '1 2 3'); //записывает строку в файл'work1.txt'
Writeln(Vf1, '10 20 30'); //записывает 2-ю строку в файл
Writeln(Vf1, '100 200 300'); //записывает 3-ю строку в файл
Reset(Vf1); //устанавливает указатель файла 'work1.txt' в начало файла
while not SeekEof(Vf1) do
begin //цикл, пока не достигнут конец файла
if SeekEoln(Vf1) then Readln; //если достигнут конец строки в файле, то переход на следующую строку
Read(Vf1, j); //читает число из файла 'work1.txt'
Writeln(Vf2, j); //записывает число в файл 'work2.txt'
end;
CloseFile(Vf1);
CloseFile(Vf2);
end;

 

 




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


Дата добавления: 2014-01-07; Просмотров: 493; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.009 сек.