КОМПЬЮТЕРНЫЕ КУРСЫ "ПОИСК"
[Главная страница] [Delphi] [Контакты]
Самым лучшим инструментом для записи данных в файлы и чтения данных из них является класс TFileStream (этот класс объявлен в модуле Classes). Класс TFileStream позволяет выполнять следующие действия:
Чтобы начать чтение или запись данных в файл, вы должны создать экземпляр класса TFileStream. Конструктор TFileStream принимает два параметра:
constructor Create(const FileName: string; Mode: Word);
Первый параметр представляет имя файла, а второй параметр показывает, как открывать файл — создать, открыть для чтения, открыть для записи, открыть для чтения и записи и так далее. В таблице ниже содержится список констант, которые могут быть переданы в качестве параметра Mode.
Константа | Описание |
---|---|
fmCreate |
Создание нового файла или открытие файла для записи, если он уже существует. |
fmOpenRead | Открытие файла только для чтения. |
fmOpenWrite | Открытие файла только для записи. |
fmOpenReadWrite | Открытие файла для чтения и записи. |
Чтение и запись выполняются с помощью методов Read и Write. Оба метода принимают два параметра:
function Read(var Buffer;
Count: Longint): Longint;
function Write(const Buffer; Count: Longint):
Longint;
Метод Read считывает байты Count из файла и помещает данные в переменную Buffer. Метод Write записывает байты Count из переменной Buffer в файл. Оба метода обновляют свойство Position, которое представляет позицию потока.
В листинге ниже показано, как производится запись компонента и двух значений в файл с помощью класса TFileStream.
procedure TForm1.Button1Click(Sender: TObject); var fs: TFileStream; n: Integer; s: string; begin fs := TFileStream.Create('sample.txt', fmCreate); try fs.WriteComponent(Label1); n := 5650; fs.Write(n, SizeOf(Integer)); { При записи строк необходимо сообщить методу Write о том, что запись должна начинаться с первого символа } s := 'Some text'; fs.Write(s[1], Length(s)); finally fs.Free; end; // завершение конструкции try (fs) end;
Большое количество компонентов VCL умеют загружать данные из потока (метод LoadFromStream) или сохранять данные в поток (метод SaveToStream). В следующем примере демонстрируется применение метода SaveToStream для сохранения содержимого двух компонентов ТМеmо в одном текстовом файле.
procedure TForm1.Button2Click(Sender: TObject); var fs: TFileStream; begin fs := TFileStream.Create('sample2.txt', fmCreate); try Memo1.Lines.SaveToStream(fs); Memo2.Lines.SaveToStream(fs); finally fs.Free; end; end;
Копирование данных из одного потока в другой выполняется с помощью метода CopyFrom. Метод CopyFrom принимает два параметра: исходный поток и количество байтов, которые будут скопированы из одного потока в другой.
Следующий пример показывает, насколько просто копировать файл с помощью класса TFileStream.
procedure TForm1.Button3Click(Sender: TObject); var src, dest: TFileStream; begin src := TFileStream.Create('sample.txt', fmOpenRead); try dest := TFileStream.Create('dest.txt', fmCreate); try // копирование файла dest.CopyFrom(src, src.Size) finally dest.Free; end; // завершение конструкции try (dest) finally src.Free; end; // завершение конструкции try (src) end;
Источник: Иван Хладни - Внутренний мир Borland Delphi 2006.