Файл, компонентами которого являются данные символьного типа, называется символьным или текстовым. Текстовый файл – это совокупность символов, разделенных на строки, причем в конце каждой строки стоит признак ее конца. Особенностью работы с текстовыми файлами является то, что параметры, значения которых вводятся и выводится с помощью процедур Read, ReadLn, Write, WriteLn, могут быть не обязательно типа Char или string, а и других простых типов, таких как целых, вещественных типов при вводе, целых, вещественных и логических типов при выводе. Имеется две стандартные файловые переменные для текстового файла Input и Output. Переменная Input по умолчанию связана с клавиатурой, а Output с экраном монитора. Если при работе с фалами типа TextFile в процедуре или функции не указана файловая переменная, считается, что используется файловая переменная Input или Output.
Объявление текстового файла выглядит следующим образом:
FileName: TextFile;
где
FileName — имя файловой переменной;
TextFile — обозначение типа, указывающее, что имя — это файловая переменная, представляющая текстовый файл.
|
|
Текстовый файл может быть открыт либо для чтения процедурой Reset, либо для записи процедурой ReWrite или Append.
Пример:
Посчитать количество положительных пар чисел, записанных в текстовом файле.
В данной программе в разделе initialization файловая переменная связывается с именем файла процедурой AssignFile, и он открывается для чтения и записи процедурой Reset. Предполагается, что файл уже создан, например, в среде Delphi или редакторе Блокнот. В разделе finalization фал закрывается процедурой CloseFile.
procedure TForm1.Button2Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
N:word;
function NumberRead:integer;
begin
if not SeekEof(Fil) then
read(Fil,Result)
else Result:=0;
end;
begin
N:=0;
while not SeekEof(Fil) do
if(NumberRead>0) and
(NumberRead>0) then
Inc(N);
Label1.Caption:='Число пар '+IntToStr(N);
end;
initialization
AssignFile(Fil,'File1.txt');
Reset(Fil);
finalization
CloseFile(Fil);
Пример:
В этой программе осуществляется чтение данных из текстового файла и вывод их на экран посредством процедуры ShowMessage.
AssignFile осуществляет привязку строки пути файла к файловой переменной. Все дальнейшие операции с файловой переменной автоматически осуществляются с указанным файлом. Для избежания путаницы, нужно указывать полный путь к файлу.
{$I-} и {$I+} являются директивами компилятору, что в этом месте соответственно следует отключить и включить контроль ошибок ввода-вывода. В данном случае при неудачной попытке открытия файла c:\File1.txt (файл отсутствует или открыт для записи другой программой) эта программа не выдаст аварийной ошибки и продолжит выполнение данной процедуры. Это свойство полезно для обработки всех возможных случаев в работе программы. IOResult — переменная, которая хранит в себе код ошибки последней операции ввода-вывода. Если она равна нулю, то последняя операция была успешно выполнена.
|
|
EOF(Файл) — функция, возвращающая признак конца файла. То есть она показывает, достигнут или нет конец открытого файла.
ReadLn(Файл, Переменная) — процедура считывания переменной из файла. В отличие от команды Read производит считывание строки с завершающимся символом перевода строки под кодами 13 и 10 (клавиша Enter).
CloseFile(Файл) — процедура закрытия ранее открытого файла.
procedure TForm1.Button1Click(Sender: TObject);
Var f:TextFile; // объявление файловой переменной
st:String; // строковая переменная
begin
AssignFile(f,'c:\1.txt'); //привязка названия файла к файловой переменной
{$I-} // отключение контроля ошибок ввода-вывода
Reset(f); // открытие файла для чтения
{$I+} // включение контроля ошибок ввода-вывода
if IOResult<>0 then //проверка,если ли ошибка открытия
begin
ShowMessage('Ошибка открытия файла C:\1.TXT');
Exit; // выход из процедуры при ошибке открытия файла
end;
While not EOF(f) do //
begin
ReadLn(f,st); // читать из файла строку
ShowMessage(st); // выводить строку пользователю
end;
CloseFile(f); // закрыть файл
end;