Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OZO_KURSOVAYa_RABOTA_5_semestr.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
218.62 Кб
Скачать

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

Текстовые файлы связываются с файловыми переменными, принадлежащими стандартному типу textfile. Используются для хранения текстовой информации. В файлах такого типа также могут храниться целые и вещественные числа. Запись текстового файла имеет переменную длину, поэтому файлы такого типа относятся к файлам последовательного доступа. При создании текстового файла в конце каждой строки автоматически ставится специальный символ – eoln, который состоит из двух байтов #13 (cr) и #10 (lf). cr – возврат каретки, lf – перевод строки. В конце файла ставится специальный признак eof (#27). Текстовые файлы открываются с помощью трёх процедур: reset – для чтения, rewrite – для записи, append – для добавления. Чтение осуществляется с помощью процедур read и readln, запись – с помощью write и writeln.

Пример.

Writeln (f, ‘ABC’, 12, ‘X’, 0.5); // ABC 12 X 5E-1

При переводе переменных типа string, количество считанных процедурой и помещённых в строки символов равно максимальной длине строки, если раньше не встретится признак eoln. Этот признак в строку не помещается. Если количество символов во входном потоке данных больше максимальной длины строки, то лишние символы отбрасываются. При вводе числовых переменных, процедура read работает следующим образом: все ведущие пробелы, признаки конца строк, табуляции пропускаются до появления первого значащего символа и, наоборот, любой из перечисленных символов, а также признак конца файла, считается концом подстроки. Выделенная таким образом подстрока рассматривается как строковое выражение числовой переменной. Затем она конвертируется во внутреннее представление числа, и результат присваивается переменной.

Пример 1.

Содержимое файла c:\FEI\alpha.txt:

-abceoln

---203eoln

2-3-a52,5eof

var

f: textfile;

s: string;

s2: string[2];

a, b, c: integer;

x: real;

begin

assignfile(f, ‘c:\FEI\alpha.txt’);

reset(f); Открываем файл для чтения

readln(f, s); {s=’-abc’} Считываем информацию из файла с переводом курсора

readln(f, a); {a=203} на новую строку

read(f, b, c); {b=2, c=3}

read(f, x); //ОШИБКА!!!

end;

Пример 2 (вывод текстового файла на экран: текстовый файл - тот же).

Procedure TForm1.Button1Click(Sender: TObject);

Var

f: textfile;

s: string;

begin

assignfile(f,’c:\fei\alpha.txt’);

reset(f); Открываем файл для чтения

while not eof(f) do Пока не достигнут конец файла выполняем

begin

readln(f,s); Считываем информацию из файла

Memo1.Lines.Add(s); Записываем в Memo1

end;

end;

Если в конвертируемой строке был нарушен требуемый формат, возникает ошибка ввода-вывода.

Процедура write/writeln обеспечивает вывод информации в текстовый файл. Список вывода аналогичен процедуре read, за исключением числовых значений, для которых существует специальный формат: элемент [:m[:n]], m – указывает минимальную ширину поля, в которую будет помещён элемент, n – указывает максимальное количество знаков после запятой.

Процедура writeln аналогична процедуре write, но в конце добавляется признак конца строки.

Пример 3 (слияние двух файлов в третий).

Procedure TForm1.Button1Click(Sender: TObject);

Var

f1,f2,f3: textfile;

s:string;

begin

assignfile(f1, ‘alpha.txt’);

assignfile(f2, ‘beta.txt’);

assignfile(f3, ‘omega.txt’);

reset(f1); Открываем для чтения

reset(f2); Открываем для чтения

rewrite(f3); Открываем для записи

while not eof(f1) do

begin

readln(f1, s); Считываем из файла

writeln(f3, s); Записываем в файл

end;

while not eof(f2) do

begin

readln(f2, s); Считываем из файла

writeln(f3, s); Записываем в файл

end;

ShowMessage(‘Ok!’);

end;

Пример 4 (определение количества строк и символов в файле).

Procedure TForm1.Button1Click(Sender: TObject);

Var

f: textfile;

s: string;

i,k: int64;

Begin

assignfile(f, ‘alpha.txt’);

reset(f); Открываем для чтения

k:=0;

i:=0;

while not eof(f) do

begin

readln(f, s); Считываем из файла

inc(i);

k:=k+length(s);

end;

showmessage(‘alpha.txt содержит’ + inttostr(i) + ‘строк и, ’ + inttostr(k) + ‘символов’);

End;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]