Работа с файлами и папками в Delphi: стандартные процедуры и функции, дополнительные возможности по сравнению с паскалем, окна диалогов работы с файлами 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Работа с файлами и папками в Delphi: стандартные процедуры и функции, дополнительные возможности по сравнению с паскалем, окна диалогов работы с файлами



Файл — это именованная структура данных, представляющая собой последовательность элементов данных одного типа, причем количество элементов последовательности практически не ограничено.

Файл должен быть объявлен в разделе описания переменных. При объявлении файла указывается тип элементов файла: Имя: file of ТипЭлементов;

Файлы могут быть трех вариантов:

1) Типизированные. Такие файлы принадлежат к какому-то типу данных, и могут работать только с ним. Это очень удобно для создания файлов записей: f1: File of <тип>;

2) Текстовые файлы. Файл, компонентами которого являются данные символьного типа, называется символьным, или текстовым. Описание текстового файла: f2: TextFile;

3) Нетипизированные файлы. Предназначены для побайтовой работы с файлами любого типа. Например, такой тип удобно использовать для копирования файла, его переноса или переименования: f3: File;

f1, f2, f3 — имена файловых переменных.

ASSIGN (<имя файла>,<имя файла на носителе>) – процедура устанавливает связь между именем файловой переменной и именем файла на носителе. Здесь <имя файла> это файловая переменная, т.е. правильный идентификатор, объявленный в программе как переменная файлового типа. <Имя файла на носителе> – текстовое выражение, содержащее имя файла или имя логического устройства. Перед именем файла на носителе может ставиться путь к файлу – имя диска и(или) имя текущего каталога и имена каталогов вышестоящих уровней.

RESET (<имя файла>) – процедура открытия существующего файла для чтения при последовательном доступе и для чтения и записи при прямом доступе. Указатель файла при этом устанавливается на первую запись (с 0 номером).

REWRITE (<имя файла>) – процедура открытия создаваемого файла для записи. Если файл с таким именем уже существовал, то он стирается. Указатель файла устанавливается на первую запись.

READ (<имя файла>, <переменные>) – процедура чтения очередных компонент файла в переменные, тип которых должен совпадать с типом компонент файла. Указатель файла при этом передвигается на количество прочитанных компонент.

WRITE (<имя файла>, <переменные>) – процедура записи содержимого переменных в файл согласно положению указателя. Указатель автоматически сдвигается на число записанных компонент.

SEEK (<имя файла>, <номер компоненты>) – процедура установки текущего указателя для чтения или записи требуемой компоненты файла. Используется для организации прямого доступа к записям файла.

CLOSE (<имя файла>) – процедура закрытия файла. Обязательно должна использоваться после создания файла, иначе может произойти потеря данных.

ERASE (<имя файла>) – процедура уничтожения файла. Открытый файл прежде должен быть закрыт.

RENAME (<старое имя файла>, <новое имя файла>) – процедура для переименования файла. Используется после закрытия файла.

IORESULT – функция возврата условного признака последней операции ввода-вывода. Если операция завершилась успешно, функция возвращает нуль. Функция становится доступной только при отключенном автоконтроле ошибок ввода-вывода. Директива компилятора {$I-} отключает, а {$I+} – включает автоконтроль ошибок. Если автоконтроль отключен и операция ввода-вывода привела к возникновению ошибки, устанавливается флаг ошибки и все последующие обращения к вводу-выводу блокируются, пока не будет вызвана функция IORESULT.

FILEPOS (<имя файла>) – функция определения номера текущей записи файла.

FILESIZE (<имя файла>) – функция определения общего количества записей файла.

EOF (<имя файла>) – функция определения признака конца файла. Получает значение TRUE при чтении последней записи файла.

EOLN (<имя файла>) – функция обнаружения конца строки в текстовом файле. Имеет значение TRUE, если найден конец строки.

Особенности обработки типизированных файлов.

Файл с типом (типизированный файл) состоит из последовательности записей одинаковой длины и одинакового внутреннего формата. Записи следуют непрерывно друг за другом. Первые 4 байта первого сектора файла содержат количество и длину записи. К файлам с такой организацией можно обращаться последовательно и выборочно (с прямым доступом).

При последовательном доступе записи располагаются на внешнем носителе последовательно в порядке их поступления, т.е. чтение или запись I+1 компоненты возможно только после I –ой компоненты.

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

Процедуры чтения и записи для файлов с типом READ и WRITE. Кроме того, используются процедуры и функции ASSIGN, RESET, REWRITE, SEEK, CLOSE, FILEPOS, FILESIZE, EOF. Процедура TRUNCATE обрезает файл на заданной файловой позиции.

Особенности обработки текстовых файлов.

Текстовые файлы состоят из символов. Каждый текстовый файл разделяется на строки. Строки состоят из любого числа символов, т.е. строки неопределенной длины, и заканчиваются символом конец строки. Весь файл заканчивается символом конец файла.

К текстовым файлам возможен только последовательный доступ. С текстовыми файлами работают различные редакторы текстов. Текстовые файлы имеют стандартный тип TEXT.

Посимвольные операции ввода-вывода выполняются для текстовых файлов процедурами read и write. Строки обрабатываются специальными процедурами для текстовых файлов readln и writeln. Кроме того для текстовых файлов применяются процедуры ASSIGN, RESET, REWRITE, CLOSE, EOF, eoln. Процедура append открывает существующий текстовый файл для добавления записей. Для текстовых файлов нельзя использовать процедуры и функции SEEK, FILEPOS, FILESIZE, т.к. элементы имеют разную длину.

INPUT и OUTPUT - стандартные текстовые файлы для ввода с клавиатуры и вывода на экран.

Работа с директориями (папками) в Дельфи.

Создать папку позволяет функция CreateDir () и процедура MkDir (). Аналогично удалению, первая может сказать о том, получилось ли создать, а вторая лишь молча попробует сделать своё дело: CreateDir('Documents');

Функция ForceDirectories () позволяет создать сразу целую цепочку вложенных друг в друга папок.

Для удаления папок используется функция RemoveDir (). Есть и альтернатива - процедура RmDir (), однако об успешности удаления она не сообщает. Данные функции способны удалять только пустые папки.

Функцию проверки существования директории – DirectoryExists. Если директория указанная в параметре Name существует - то функция возвратит true.

function DirectoryExists(Name: string): Boolean;

Delphi диалоги открытия и сохранения файлов.

Компоненты OpenDialog — диалог «Открыть файл» и SaveDialog — диалог «Сохранить файл как...».

Delphi диалоги выбора файла позволяют указать програме, с каким файлом мы хотим работать. На вкладке палитры компонентов Dialogs находятся компонент Delphi OpenDialog (стандартное Windows-окно диалога открытия файла) и компонент Delphi SaveDialog (стандартное Windows-окно диалога сохранения файла).

Delphi диалоги выбора файла только предоставляют настройки, сделанные пользователем при выборе файла. Самый важный метод Delphi диалогов - Execute. Он срабатывает в момент нажатия кнопки "открыть" или "сохранить" в окне выбора файла.

if OpenDialog1.Execute then

Memo1.Lines. LoadFromFile (OpenDialog1.FileName);

if OpenDialog1.Execute then

Memo1.Lines. SaveToFile (OpenDialog1.FileName);

Cпециализированные диалоги открытия и закрытия графических файлов: OpenPictureDialog и SavePictureDialog.

От окон, открываемых компонентами OpenDialog и SaveDialog, они отличаются удобной возможностью просматривать изображения в процессе выбора файла.

Фрагменты диалогов в Delphi.

Выпадающие списки дисков (драйверов) — DriveComboBox и фильтров (масок) файлов — FilterComboBox, списки каталогов — DirectoryListBox и файлов — FileListBox, дерево каталогов — DirectoryOutline.

 



Поделиться:


Последнее изменение этой страницы: 2016-08-15; просмотров: 925; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.138.102.178 (0.007 с.)