Стандартные подпрограммы для работы с файлами и каталогами — КиберПедия 

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

Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...

Стандартные подпрограммы для работы с файлами и каталогами

2017-11-28 185
Стандартные подпрограммы для работы с файлами и каталогами 0.00 из 5.00 0 оценок
Заказать работу

 

В данном разделе приводится перечень подпрограмм, используемых для работы с файлами и каталогами. Эти подпрограммы находятся в модулях System и SysUtils и в некоторых областях дублируют друг друга. Это связано с необходимостью поддер­живать совместимость со старыми версиями Delphi, а также с появлением новых более гибких средств. В частности функции модуля SysUtils позволяют контролировать результат по возвращаемому значению.

 

Подпрограмма Назначение
procedure ChDir(const S: string); Задать текущий каталог в соот­вет­ст­вии с путем, заданным параметром S.
procedure MkDir(const S: string); Создать каталог, путь к которому задан в переменной S.
function CreateDir(const Dir: string): Boolean;   Создать каталог, путь к которому задан в переменной Dir.
function DeleteFile(const FileName: string): Boolean;   Удалить файл, путь к которому задан в параметре FileName.
function DirectoryExists(const Directory: string): Boolean;   Проверить существует ли каталог, за­дан­ный параметром Directory.
function FileExists(const FileName: string): Boolean; Проверить существует ли файл, путь к которому задан параметром FileName.
function GetCurrentDir: string; Возвращает имя текущего каталога.
procedure GetDir(D: Byte; var S: string); Для диска, заданного параметром D (0- A, 1 – C, 2 – D и так далее), записывает в переменную S полный путь поиска текущего каталога этого диска
function RemoveDir(const Dir: string): Boolean; Удалить пустой каталог, путь к которому задан переменной Dir
function RenameFile(const OldName, NewName: string): Boolean; Файл OldName получает новое имя NewName
function SetCurrentDir(const Dir: string): Boolean Сделать текущим каталог, путь к кото­рому задан параметром Dir.
Function FilePos(var F): Longint; Возвращает номер текущей позиции в файле, нумерация с нуля.
Function FileSize(var F): Integer; Возвращает число записей в файле или его размер в байтах.

 

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

 

В данном примере выполняется копирование информации из одного файла в другой, при этом файлы выбираются с использованием стандартных диалоговых окон 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;

 

Пример работы с текстовыми файлами

 

В данном примере файл pole.txt открывается как текстовый файл. В него записываются строки чисел. После чего записанная в файл информация считывается и выводится в форме.

var

f: TextFile;

i, j, Y: Integer;

begin

AssignFile(f,'d:\temp\pole.TXT');

Rewrite(f);

{ Создать файл с 8 числами и пробелами }

Writeln(f,'1 2 3 4 ');

Writeln(f,'5 6 7 8 ');

Reset(f);

{ Чтение чисел в обратном порядке. SeekEof возвращает TRUE

пока не конец файла }

Y:= 5;

while not SeekEof(f) do

begin

Read(f,j);

Canvas.TextOut(5, Y, IntToStr(j));

Y:= Y + Canvas.TextHeight(IntToStr(j)) + 5;

end;

 


Поделиться с друзьями:

Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...

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

История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.006 с.