Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

Чтение из файла

Delphi , Файловая система , Файлы

Чтение из файла

Пусть на диске есть некоторый текстовый файл. Нужно в диалоговое окно вывести содержимое этого файла. Решение задачи довольно очевидно: надо открыть файл, прочитать первую строку, затем вторую, третью и т. д. до тех пор, пока не будет достигнут конец файла. Но как определить, что прочитана последняя строка, достигнут конец файла?

Для определения конца файла можно воспользоваться функцией EOF (End of File — конец файла). У функции EOF один параметр — файловая переменная. Значение функции EOF равно False, если прочитанный элемент данных не является последним в файле, т. е. возможно дальнейшее чтение. Если прочитанный элемент данных является последним, то значение EOF равно True.

Значение функции EOF можно проверить сразу после открытия файла. Если при этом оно окажется равным True, то это значит, что файл не содержит ни одного элемента данных, т. е. является пустым (размер такого файла равен нулю).

В листинге приведена процедура, которая выполняет поставленную задачу. Она читает строки из файла, имя которого ввел пользователь во время работы программы, и выводит эти строки в поле Memo.

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.

Статья Чтение из файла раздела Файловая система Файлы может быть полезна для разработчиков на Delphi и FreePascal.


Комментарии и вопросы


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




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



:: Главная :: Файлы ::


реклама



©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru Rambler's Top100
28.03.2024 23:37:33/0.001054048538208/0