Меню сайта
Категории сайта
Ссылки на скачивание
Главная » Основы 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; | |
|
Всего комментариев: 0 | |