Пример 8.4.
Создать программу обмена данными с файлом, использующую связь с файлами без файловых переменных. Она заносит в буфер 6 случайных чисел и переносит их в файл (он создается в папке проекта). Затем буфер обнуляется, и из файла возвращаются первые 4 числа.
Листинг программы
program prg_8_4;
{$mode objfpc}{$H+}
uses
Classes, SysUtils, RusTrans;
const
Count=6; // Константа Count
var
hMyFile: Integer; // Дескриптор файла
Buffer: Array[1..Count] of Byte; // Буфер
i, Fact: Integer;
begin
hMyFile:=FileCreate(‘MyFile’); // Создать файл
writeln(Rus(‘В буфере случайные числа’));
Randomize;
for i:=1 to Count do // Заполнить буфер
begin
Buffer[i]:= Random(100);
writeln(‘ ‘, Buffer[i]); // Вывод буфера на дисплей
end;
Fact:=Filewrite(hMyFile, Buffer, Count); // Запись в файл
writeln(Rus(‘В файл записано чисел ‘),Fact);
readln;
writeln(Rus(‘Буфер очишается’));
for i:=1 to Count do
begin
Buffer[i]:=0;
writeln(‘ ‘,Buffer[i]); // Вывод буфера на дисплей
end;
readln;
FileSeek(hMyFile, 0, 0); // Установить маркер
Fact:=FileRead(hMyFile, Buffer, Count-2); // Чтение из файла
writeln(Rus(‘Из файла в буфер прочитаны’));
for i:=1 to Count do
begin
writeln(‘ ‘,Buffer[i]); // Вывод буфера на дисплей
end;
writeln(Rus(‘В буфере ненулевых чисел ‘),Fact);
FileClose (hMyFile); // Закрыть файл
readln;
end.
Консоль перед закрытием программы:
Выводы
- В Lazarus определены типизированный, текстовый и нетипизированный файлы.
- Связь с файлами может быть через файловые переменные или по именам.
- При применении файловых переменных для связи с файлами на диске используется процедура AssignFile.
- В типизированном файле возможен произвольный доступ к компоненту с любым номером.
- В текстовом файле произвольный доступ к символу невозможен. Можно обращаться к строкам текста.
- Нетипизированные файлы полезны для скоростного копирования.