Пятница, 17.05.2024, 11:39
Главная Регистрация RSS
Приветствую Вас, Гость
Главная » Основы Delphi » Delphi работа с файлами
21:40

Delphi работа с файлами

Среда разработки Delphi имеет множество разнообразных компонентов и функций для создания файлов любых расширений. С помощью этих же компонентов можно не только создавать файлы (текстовые, графические, исполняемые и т.д.), но и редактировать уже имеющиеся в системе объекты, к которым можно отнести обычные текстовые файлы, документы Microsoft Word, Microsoft Excel, различные скрипты и т.д.
Работа с файлами в Delphi заключается в чтений данных, их обработки и записи обратно в файл. Средства позволяющие выполнять выше указанные операций можно разделить на «низкоуровневые», к ним относиться функций Win32 API и «высокоуровневые» - это готовые функций которые имеют в библиотеках среды разработки Delphi. Они реализованы с помощью того же интерфейса Win32 API, только работать с ними гораздо проще.
В контексте данной статьи я буду рассматривать только готовые средства для создания файлов. Рассмотрим один способ, наиболее часто используемый:
Создание файла с помощью функций которые использовались еще в древнем Borland Pascal, а именно AssignFile, Append, Rewrite, Write, Read и т.д.

Пример:

var File: TextFile;
S: String;
...
AssignFile (File, 'file.txt');

{$I-}

Append (File);

{$I+}

if IOResult <> 0 then exit;

Read (File, S);
Write (File, S);

CloseFile (File);

Бывают ситуации когда файл с которым в текущий момент работает программ занят другим приложением. Для исключения подобных ситуации и не возникновения критических ошибок из-за которых приложения может аварийно завершить работу, необходимо функций открытия для чтения, добавления и перезаписи заключать в следующий код {$I-} и{$I+}. Результат вышеперечисленных функций можно проверить «прочитав» значение функций IOResult, которая возвращает 0, если операция завершилась успешно, в другом случаи код ошибки. Директивы компилятору {$I-} и {$I+} вовсе не обязательны, но желательно указывать их каждый раз при написаний кода для работы с файлами.

Функции модуля SysUtils для работы с файлами

Существует еще более простой набор функции для работы c файлами. Выше рассмотренные функции были еще в Borland Pascal, и являются встроенными в язык программирования, и сохранились в Delphi. Среда разработки Delphi содержит множество компонентов и функций прописанных в run time библиотеках, созданных для упрощения и ускорения написания программного кода. Функций FileOpen, FileRead, FileWrite, FileClose которые сейчас будут рассмотрены расположены в модуле SysUtils. Просмотрев исходные коды данных функций можно увидеть, что они реализованы с помощью интерфейса win32 api т.е. скорость их выполнения практически такая же как если бы функции Windows использовались непосредственно. При написаний программы работающей с файлами на «чистом» win32 api пришлось прописывать множество дополнительных функции. К примеру обязательной был бы вызов функций проверяющей результат работы остальных функции. В FileOpen все необходимое уже прописано, вам достаточно лишь вызвать его и передать два параметра, аналогично и в функциях FileRead, FileWrite, FileClose.

Подробное описание функций модуля SysUtils для работы с файлами

FileOpen определена в модуле следующим кодом:

function FileOpen(const FileName: string; Mode: LongWord): Integer;

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

procedure FileClose(Handle:Integer);

FileClose принимает в качестве параметра одно значение – указатель на открытый файл полученный вышерассмотренной функцией.

function FileWrite(Handle:Integer; const Buffer; Count: LongWord):Integer;
function FileRead(Handle: Integer; var Buffer; Count: LongWord):Integer;

FileWrite и FileRead используется для записи и чтения информации соответственно. Параметры данных функции аналогичные, сами функции отличаются лишь действиями которые они совершают над файлом.
FileWrite записывает содержимое Buffer в файл, FileRead считывает информацию в переменную Buffer. Count – это число которое определяет сколько символов из переменой Buffer нужно записать или прочитать из файла.

Пример:

var
iFile: Integer;
Buffer: Array[1..2] of Char;
begin
Buffer[1] := '1';
Buffer[2] := '2';
iFile := FileOpen('text.txt', SysUtils.fmOpenWrite);

FileWrite(iFile, Buffer, 3); // в файл указатель на который содержится в переменой iFile, записывается из

FileClose(iFile);
end;
Категория: Основы Delphi | Просмотров: 3883 | Добавил: PeKpyT | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]