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

 

Rewrite (файловая_переменная) – открыть новый файл для записи.

Reset (файловая_переменная) – открыть существующий файл для чтения.

Append (файловая_переменная) – открыть существующий файл для дополнения. Процедура открывает файл для записи и устанавливает указатель файла в конец файла.

Read (файловая_переменная, список_ввода) – обеспечивает ввод символов, строк и чисел. Список ввода – последовательность из одной или более переменных типа Char, String, а также любого целого или вещественного типа.

При вводе переменных типа Char выполняется чтение одного символа. При вводе переменной типа String считывается вся строка.

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

ReadLn (файловая_переменная, список_ввода) – обеспечивает ввод символов, строк и чисел. Эта процедура аналогична процедуре Read за исключением того, что после считывания последней в списке переменной происходит перевод указателя на начало новой строки.

Write (файловая_переменная, список_вывода) – обеспечивает вывод информации в текстовый файл. Список вывода – последовательность из одного или более выражений типа Char, String, а также любого целого или вещественного типа. При записи переменных в файл можно указывать форматы вывода.

WriteLn (файловая_переменная, список_вывода) – обеспечивает вывод информации в текстовый файл. Эта процедура аналогична процедуре Write за исключением того, что после вывода последней в списке переменной происходит перевод указателя на начало новой строки.

 

Функции для работы с текстовыми файлами

 

    EOLN (файловая_переменная) – возвращает значение True, если достигнут маркер конца строки.

    SeekEOLN (файловая_переменная) – пропускает все пробелы и знаки табуляции до маркера конца строки или до первого значащего символа и возвращает значение True, если маркер обнаружен.

    SeekEOF (файловая_переменная) – пропускает все пробелы и знаки табуляции и маркеры конца строки до маркера конца файла или до первого значащего символа и возвращает значение True, если маркер обнаружен.

 

Порядок создания текстового файла

 

1. Присвоить имя файлу (Assign).

2. Открыть новый файл (Rewrite).

3. Записать компонент в файл (WriteLn).

4. Закрыть файл (Close).

 

Порядок использования текстового файла

 

1. Присвоить имя файлу (Assign).

2. Открыть существующий файл (Reset).

3. прочитать компонент из файла (ReadLn).

4. Закрыть файл (Close).

 

Порядок корректировки текстового файла

 

    Корректировка текстового файла заключается во внесении новых компонент в конец файла.

1. Присвоить имя файлу (Assign).

2. Открыть файл для дополнения (Append).

3. Записать компонент в файл (WriteLn).

4. Закрыть файл (Close).

 

    Пример 1. Создать файл, компоненты которого являются строками. Распечатать все строки файла, длина которых более 20 символов.

Program Demo_1;

Var

F:Text;

St:String;

{создание текстового файла}

Procedure Sozd;

Begin

Assign (F,’Stroki.dat’);

Rewrite(F);

Writeln (’Введите строки файла’);

Writeln (’Признак окончания ввода – ***’);

While True do

Begin

Readln(St);

If St=’***’ then

Begin

Close(F);

Exit;

end;

WriteLn(F,St); {записали строку в файл}

end;

End;

{обработка текстового файла}

Procedure Vivod;

Begin

Assign (F,’Stroki.dat’);

Reset(F);

While Not SeekEOF(F) do

Begin

Readln(F,St); {прочитали строку из файла}

If Length(St)>20 then

WriteLn(St);

end;

Close(F);

End;

Begin {основная программа}

Sozd;

Vivod;

End.

 

    Пример 2. Найти количество положительных элементов в целочисленном векторе A[1..5]. Результаты поместить в файл. Входной файл Input.txt содержит 5 чисел по одному в строке. Выходной файл Output.txt должен содержать единственное число – количество положительных элементов.

 

Пример входного файла Input.txt Пример выходного файла Output.txt
5 –3 4 –1 1 2

 

Program Demo_2;

Var

F:Text;

A:array[1..5] of Integer;

i,kol: Byte;

Begin

{считываем данные из файла}

Assign (F,’Input.txt’);

Reset (F);

For i:=1 to 5 do

ReadLn(F,A[i]);

Close(F);

{считаем количество положительных элементов}

kol:=0;

For i:=1 to 5 do

If A[i]>0 then Inc(kol);

{записываем результат в файл}

Assign (F,’Output.txt’);

Reset (F);

WriteLn(F,kol);

Close(F);

End.

 

    Пример 3. Дана вещественная матрица A[1..5,1..5]. Построить вектор B[1..5], состоящий из сумм отрицательных элементов каждой строки матрицы A. Результаты поместить в файл. Входной файл Input.txt содержит 5 строк по 5 чисел в строке. Выходной файл Output.txt должен содержать элементы вектора B – по одному в строке.

 

Пример входного файла Input.txt Пример выходного файла Output.txt
 5.1 4.0 2.2 –1.0 6.3 –3.1 6.1 –3.1 –2.2 6.8  4.1 –4.5 2.2 –5.6 –3.2 –1.1 1.0 2.1 –4.1 6.3  1.1 4.7 2.5 –8.0 3.3 -1.0 –8.4 –13.3 –5.2 -8.0

 

Program Demo_3;

Var

F:Text;

A:array[1..5,1..5] of Real;

B:array[1..5] of Real;

i,j,sum: Byte;

Begin

{считываем данные из файла}

Assign (F,’Input.txt’);

Reset (F);

For i:=1 to 5 do

begin

For j:=1 to 5 do

Read(F,A[i,j]);

ReadLn(F);

END;

Close(F);

{считаем сумму отрицательных элементов в каждой строке}

For i:=1 to 5 do

begin

  sum:=0;

  For j:=1 to 5 do

  If A[i,j]<0 then sum:=sum+A[i,j];

B[i]:=sum

end;

{записываем результат в файл}

Assign (F,’Output.txt’);

Reset (F);

For i:=1 to 5 do

  WriteLn(F,B[i]);

Close(F);

End.

 

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

 

    Формат описания:

    1-ый способ:

    Type

    имя_файлового_типа=File;

    Var

    файловая_переменная: имя_файлового_типа;

    2-ой способ:

    Var

    файловая_переменная : File;

        

 

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

    При инициализации нетипизированного файла процедурами Reset или Rewrite можно указать длину записи нетипизированного файла в байтах. Если длина записи не указана, принимается 128 байт.

    Пример:

Var

F:File;

Begin

Assign(F,’MyFile.dat’);

Reset(F,512);

...

End;

    При работе с нетипизированными файлами могут применяться все процедуры и функции, доступные типизированным файлам, за исключением Read и Write, которые заменяются соответственно высокоскоростными процедурами BlockRead и BlockWrite. Формат описания процедур:

    BlockRead(файловая_переменная,буфер,count);

BlockRead(файловая_переменная,буфер,count,result);

BlockWrite(файловая_переменная,буфер,count);

BlockWrite(файловая_переменная,буфер,count,result);

    Буфер – это имя переменной, которая будет участвовать в обмене данными с диском. Count – количество блоков, которые нужно считать или записать. Result – количество блоков, которое было передано фактически.



Дата: 2018-11-18, просмотров: 246.