Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Delphi.Начало.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
1.56 Mб
Скачать

Пример работы с нетипизированными файлами

В данном примере выполняется копирование информации из одного файла в другой, при этом файлы выбираются с использованием стандартных диалоговых окон Windows. Считывание и запись информации выполняется с использованием процедур BlockRead и BlockWrite. Копирование выполняется до тех пор, пока число считанных байтов из файла копирования не станет равным нулю, либо пока число записанных байт не будет отличаться от числа считанных байт. Число скопированных байтов выводится на экран. Проверьте правильность выполнения копирования, для этого посмотрите содержимое файлов.

var

FromF, ToF: file;

NumRead, NumWritten: Integer;

Buf: array[1..2048] of Char;

begin

if OpenDialog1.Execute then

{ Диалог открытия файла, откуда выполняется копирование }

begin

AssignFile(FromF, OpenDialog1.FileName);

Reset(FromF, 1); { Размер записи = 1 }

{ Диалог сохранения файла, куда производится сохранение файла}

if SaveDialog1.Execute then

begin

AssignFile(ToF, SaveDialog1.FileName); { Открыть выходной файл }

{ старое содержимое удаляется }

Rewrite(ToF, 1); { Размер записи = 1 }

Canvas.TextOut(10, 10, 'Копирование ' + IntToStr(FileSize(FromF)) + ' байтов ...');

repeat

BlockRead(FromF, Buf, SizeOf(Buf), NumRead);

BlockWrite(ToF, Buf, NumRead, NumWritten);

until (NumRead = 0) or (NumWritten <> NumRead);

CloseFile(FromF);

CloseFile(ToF);

end;

end;

Пример работы с типизированными файлами

Пусть имеем файл, в котором хранится таблица рекордов с именами игроков и очками, которые им удалось набрать. Информация об игроке задается с помощью типа записи TTableRec:

type TTableRec = record

name:string[20]; // имя игрока

ochki:integer; // очки

end;

Для хранения такой информации в файле будем использовать типизированный файл, который опишем с помощью переменной:

f2:File of TTableRec;

Создадим форму, подобную той, что изображена на рисунке:

В поля формы вводятся соответственно имя игрока и его очки. По кнопке «Запись в типизир файл» выполняется запись информации о новом игроке в конец типизированного файла. По кнопке «Прочитать из типизир файла» можно убедиться в том, что запись выполнена правильно, содержимое файла отображается в поле Memo1. Программный код на кнопку «Запись в типизир файл» приведен ниже:

var

f2:File of TTableRec;

size:integer;

TableRec:TTableRec;

begin

TableRec.name:=Edit1.Text;

TableRec.ochki:=StrToInt(Edit2.text);

AssignFile(f2,'d:\temp\t2.txt');

if not FileExists('d:\temp\t2.txt') then

begin

// запись в новый файл

rewrite(f2);

write(f2,TableRec);

end

else

begin

reset(f2);

// запись в конец типизированного файла

size:=filesize(f2);

Seek(f2,size);

write(f2,TableRec);

end;

CloseFile(f2);

Программный код на кнопку «Прочитать из типизир файла» приведен ниже:

var

f2:File of TTableRec;

r1:TTableRec;

str:string;

begin

// прочитать содержимое типизированного файла

AssignFile(f2,'d:\temp\t2.txt');

Reset(f2);

Memo1.Clear;

while not eof(f2) do

begin

Read(f2,r1);

str:=r1.name+' '+ IntToStr(r1.ochki)+' ';

Memo1.Lines.Add(str);

end;

CloseFile(F2);

end;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]