Чтение из файла
Листинг 7.5. Чтение из файла
unit rd_;
interface
uses
Windows, Messages, SysUtils, Variants, Classes,
Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons;
type
TForm1 = class(TForm)
Button2: TButton;
Edit1: TEdit;
Memo1: TMemo;
Button1: TButton;
procedure Button2Click(Sender: TObject);
procedure ButtonlClick(Sender: TObject);
private
{ Private declarations ) public
{ Public declarations } end;
var
Form1: TForml;
implementation
{$R *.dfm}
// щелчок на кнопке Открыть
procedure TForm1.Button1Click(Sender: TObject);
var
f: TextFile; // файл fName: String[80]; // имя файла
buf: String[80]; // буфер для чтения из файла
begin
fName := Edit1.Text; AssignFile(f, fName);
{$!-}
Reset(f);
// открыть для чтения {$I+}
if IOResult <>
0 then begin
MessageDlgt'Ошибка доступа к файлу ' + fName,
mtError,[mbOk],0);
exit; end;
// чтение из файла
while not EOF(f) do begin
readln(f, buf);
// прочитать строку из файла
Memo1.Lines.Add(buf);
// добавить строку в поле Memo1
end;
CloseFile(f);
// закрыть файл
end;
// щелчок на кнопке Сохранить — запись в файл
procedure TForml.Button2Click(Sender: TObject);
var
f: TextFile; // файл
fName: String[80]; // имя файла
i: integer/; begin
fName := Edit1.Text; AssignFile(f, fName);
Rewrite(f);
// открыть для перезаписи
// запись в файл
for i:=0 to Memo1.Lines.Count do // строки нумеруются с нуля
writeln(f, Memo1.Lines[i]);
CloseFile(f);
// закрыть файл
MessageDlg('Данные записаны в файл ',mtlnformation,[mbOk],0);
end;
end.
Для организации обработки файла использована инструкция цикла while, которая обеспечивает проверку значения функции EOF перед каждым чтением, в том числе и перед первым.
Наличие кнопки Сохранить и соответствующей ей процедуры позволяет сохранить содержимое поля Memo в файле, т. е. программа чтение из файла представляет собой примитивный редактор текста.
Добавление очередной прочитанной из файла строки в поле Memo выполняется применением метода Add к свойству Lines.