История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...
Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...
Топ:
Эволюция кровеносной системы позвоночных животных: Биологическая эволюция – необратимый процесс исторического развития живой природы...
История развития методов оптимизации: теорема Куна-Таккера, метод Лагранжа, роль выпуклости в оптимизации...
Характеристика АТП и сварочно-жестяницкого участка: Транспорт в настоящее время является одной из важнейших отраслей народного хозяйства...
Интересное:
Наиболее распространенные виды рака: Раковая опухоль — это самостоятельное новообразование, которое может возникнуть и от повышенного давления...
Подходы к решению темы фильма: Существует три основных типа исторического фильма, имеющих между собой много общего...
Инженерная защита территорий, зданий и сооружений от опасных геологических процессов: Изучение оползневых явлений, оценка устойчивости склонов и проектирование противооползневых сооружений — актуальнейшие задачи, стоящие перед отечественными...
Дисциплины:
2017-11-28 | 188 |
5.00
из
|
Заказать работу |
|
|
При работе с файлами в Delphi возможны два разных подхода. Первый состоит в использовании стандартных подпрограмм, которые имелись уже в классической версии Pascal. Второй подход использует объектный подход при работе с файлами.
Общая технология работы с файлами в Delphi
Независимо от используемого подхода технология работы с файлами в Delphi требует определенного порядка действий.
1. Прежде всего, файл необходимо открыть. Это значит, что можно вносить изменения в этот файл, при этом обращения других пользователей и программ к этому файлу будут выполняться корректно. Например, считывание данных из файла, в который другой пользователь вносит изменения, невозможно. При открытии задается режим открытия файла: для чтения или для изменения. Указывается также, какова внутренняя структура открываемого файла, для того, чтобы выполнять операции с ним максимально быстро. После успешного открытия файла в программу возвращается его идентификатор – переменная, которая будет использоваться для идентификации этого файла во всех процедурах обработки.
2. Непосредственная работа с файлом, это может быть считывание данных из него, либо изменение данных, либо поиск.
3. Файл закрывается. Это значит, что он снова доступен другим приложениям. Кроме того, закрытие файла гарантирует, что внесенные в него изменения не пропадут.
Стандартный подход к работе с файлами
Можно работать с файлом на низком уровне, не рассматривая его структуру, считывая данные побайтно, в этом случае файл называется нетипизированным. Часто файл может иметь регулярную структуру, например, в каждой записи файла хранится информация об учащемся школы. Такой файл называется типизированным. Файлы могут также хранить какой-либо текст – это текстовые файлы. Для того, чтобы можно было работать с файлом необходимо связать с ним файловую переменную. Описание такой переменной зависит от вида файла.
|
Описание файловой переменной
Нетипизированная файловая переменная объявляется c помощью ключевого слова File, например:
Var F:File
Нетипизированная файловая переменная позволяет работать с файлами на низком уровне (структура файла неизвестна). При этом данные будут записываться и считываться блоками по 128 байт (значение по умолчанию). Размер блока можно изменить в момент открытия файла. Рекомендуется назначать этот размер равным 1 байту, чтобы корректно обрабатывать файлы любой структуры.
Типизированные файлы – это файлы, состоящие из последовательности одинаковых записей. Для работы с ними применяется следующая форма описания:
Var <имя-переменная>: File of <тип>
В качестве типа можно указывать тип, для которого известен фиксированный размер в байтах, к таким типам относятся все базовые типы, а также тип данных запись, статические массивы и т.д. Например, объявляется тип запись TMyFile и файловая переменная F:
Type TMyFile = record
Name: string[20];
Ochki: integer;
End;
Var F: File of TMyFile;
Текстовые файлы связываются с файловыми переменными, принадлежащими к стандартному типу TextFile. Текстовые файлы предназначены для хранения текстовой информации. Текстовый файл трактуется как совокупность строк переменной длины. Доступ к каждой строке возможен лишь последовательно, начиная с первой. Пример объявления:
Var F1: TextFile;
Открытие файлов
Файловая переменная должна быть связана с именем файла с помощью процедуры AssignFile, для того, чтобы программа знала, где расположен файл. Например:
AssignFile(F, ‘schet.txt');
AssignFile(F1, ‘d:\game\schet.txt’);
Процедур открытия две. Первая их них – Rewrite, используется для открытия файла в режиме записи (при этом происходит полное уничтожение его содержимого, а размер файла становится равным нулю), а вторая, Reset – для открытия файла в режиме чтения (при этом вносить изменения в содержимое файла не разрешено). Rewrite можно также применять для создания нового файла. Второй необязательный параметр этих процедур определяет длину записи нетипизированного файла в байтах. Например:
|
Var F: File;
…
Rewrite(F, 1);
Запись в файл
Для работы с нетипизированными файлами применяется процедура блочного ввода\вывода BlockWrite, позволяющая обрабатывать файлы как последовательность байтов, не имеющую внутренней структуры.
procedure BlockWrite(var f: File; var Buf; Count: Integer
[; var AmtTransferred: Integer]);
Где Buf – это произвольная переменная, Count – количество блоков записываемой информации, если размер блока не указан явно при открытии файла, то он считается равным 128 байтам. Параметр AmtTransferred – необязательный, в нем будет храниться число реально записанных блоков.
Для записи в типизированный файл используется процедура Write. В качестве первого параметра указывается файловая переменная, а далее следует список переменных типа, соответствующего типу файла. Например:
Var
F:File of TTableRec;
TableRec1, Table2: TTableRec;
…
Rewrite(F);
Write(F, TableRec1, Table2);
Значения переменных TableRec1 и Table2 будут последовательно записаны в файл.
Считывание из файла
Для работы с нетипизированными файлами применяется процедура BlockRead, параметры которой аналогичны параметрам процедуры BlockWrite.
Для считывания информации из типизированных файлов используется процедура Read. Она записывается аналогично процедуре Write.
Var F: File of TTableRec;
r1, r2:TTableRec;
…
AssignFile(F, 'd:\temp\t2.txt');
Reset(F);
Read(F, r1, r2);
Начиная с текущей позиции в файле F, из него будут последовательно считаны блоки данных, соответствующие размерам экземпляра записи TTableRec и записаны в переменные r1, r2. По окончании операции ввода текущая позиция в файле F сдвинется на два элемента. Специальная процедура Trancate позволяет отсечь (удалить) все содержимое файла, начиная с текущей позиции до его конца.
Закрытие файла
По завершении работы с файлом его нужно закрыть. Для этого используется процедура CloseFile(F);
|
|
Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...
Адаптации растений и животных к жизни в горах: Большое значение для жизни организмов в горах имеют степень расчленения, крутизна и экспозиционные различия склонов...
Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...
Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!