Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Работа с файлами



Файлом называется область на жестком диске или другом ма­шинном носителе (например, на дискете), имеющая название и содержащая определенную информацию. При работе с файлами возможны такие операции, как считывание информации в пере­менные программы и занесение данных из переменных в файлы. Существует несколько разновидностей файлов, которые опреде­ляют формат хранения данных и особенности программного дос­тупа к ним:

• типизированные (двоичные файлы);

• текстовые;

• не типизированные (файлы записей).

Рассмотрим все приведенные типы, а также их отличительные особенности.

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

С понятием типизированного файла тесно связано понятие указателя на текущий элемент файла. Другими словами, при

работе с двоичным файлом, в любой момент один из элемен­тов файла является "активным", т. е. с ним могут производить­ся какие-либо действия.

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

В типизированных файлах может содержаться любая инфор­мация, однако каждый хранящийся элемент занимает определен­ное количество байт. Поэтому при его извлечении следует ис­пользовать переменные соответствующего типа, чтобы данные были корректно обработаны. Например, если извлекать из файла число 257 (тип Integer) в переменную типа Byte, диапазон значений которой [0:255], то результатом будет число 1 (см. рис. 6.21).

Следует точно знать, элементы каких типов и в каком порядке хранятся в двоичном файле, т. е. где расположен каждый элемент и сколько он занимает байт. Иначе, если указатель будет перемещен не на первый байт очередного элемента, то, по аналогии с предыдущим примером, обработка информации будет выполнена некорректно и приведет к ошибочным результатам. Например, если первым элементом двоичного файла было записано 2-байтное число 257 и после этого во второй байт было занесено число 0, то в этом случае вместо числа 257 снова будет получено число 1, так как его 8-й бит, принадлежащий второму байту, был обнулен (см. рис. 6.21).

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

Любой файл создается или открывается при помощи операто­ра Open, синтаксис которого зависит от его разновидности. Для двоичных файлов общий вид данного оператора выглядит сле­дующим образом:

Open путь For Binary As номер

Здесь

Open - служебное слово, используемое при открытии или соз­дании файла:

путь - строка или переменная типа String, содержимым ко­торой является полный путь к требуемому файлу;

For - ключевое слово для определения типа файла;

Binary - служебное слово, используемое при создании или открытии двоичного файла;

As - ключевое слово для определения переменной, содержа­щей файловый номер, посредством которого будет в дальнейшем осуществляться обработка файла;

номер - имя переменной, содержащей номер файла.

В дополнение к сказанному следует заметить, что в качест­ве параметра путь может быть указано только название файла. В этом случае работа с файлами будет происходить в том ка­талоге, который по умолчанию является рабочим в среде Vis­ual Basic.

Для работы с каталогами и дисками существует несколько функций и операторов (см. табл. 6.19).

По окончании работы с любым файлом его необходимо за­крыть при помощи оператора Close, синтаксис которого одина­ков для всех типов файлов:

Close номер

В случае необходимости удаления файла с диска используется оператор Kill, формат которого аналогичен оператору Close. Не стоит забывать, что перед удалением файла его необходимо обязательно закрыть.

Если в программе открыто несколько файлов, то для каждого из них определен свой файловый номер. Для того чтобы опреде-

лить значение первого свободного номера для очередного откры­ваемого файла, следует использовать функцию FreeFile, ре­зультат выполнения которой присваивается переменной-номеру:

Переменная-номер = FreeFile

В том случае, когда необходимо дать файлу новое имя, следу­ет вначале его закрыть, а затем воспользоваться оператором Name, синтаксис которого следующий:

Name путь1 As путь2

Где путь1 - строка или переменная типа String, которая со­держит путь к исходному файлу;

путь2 - строка или строковая переменная, содержимым кото­рой является новый путь к файлу.

Следует заметить, что если на диске уже существует файл с таким же полным названием, т. е. путь2, то при выполнении опе­ратора Name возникнет ошибка.

При необходимости создания копии какого-либо файла при­меняется оператор FileCopy, перед выполнением которого ко­пируемый файл должен быть закрыт:

FileCopy путь1, путь2

Где путь1 - путь к исходному файлу;

путь2 - путь к новому файлу.

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

Для того чтобы записать в двоичный файл какую-либо ин­формацию, следует воспользоваться оператором Put:

Put номер, позиция, переменн ая

Здесь

номер - переменная, которая содержит файловый номер;

позиция - порядковый номер байта, начиная с которого будет заноситься информация;

переменная - название переменной, содержимое которой за­писывается в файл.

Для извлечения информации из файла применяется оператор Get, формат которого совпадает с оператором Put:

Get номер, позиция, переменная

При выполнении оператора Get в переменную заносится ин­формация из файла с указанным номером, расположенная в нем по адресу позиция.

В дополнение к описанию операторов Put и Get следует за­метить, что перед номером файла можно указывать знак #.

Обработка данных в файлах любого типа осуществляется с учетом положения указателя. Для того чтобы определить поряд­ковый номер обрабатываемого элемента, следует применять функцию Seek:

Seek (номер)

Результатом вызова функции Seek будет текущая позиция, которую занимает указатель в файле с заданным номером.

1. Текстовые файлы. Содержимым подобных файлов явля­ется последовательность строк произвольной длины, которые были созданы при помощи какого-либо текстового редактора. При этом в конце каждой строки находится особое сочетание символов, которое обозначает ее окончание и состоит из "воз­врата каретки" (код в таблице символов =13) и "перевода строки" (код = 10). В дополнение к сказанному следует заме­тить, что любой файл, независимо от типа, всегда завершается специальным символом "конец строки" (код = 26).

Хранение числовых данных в текстовых файлах не является эффективным, так как каждый элемент будет представлен в виде последовательности символов. Следовательно, если не­обходимо хранить в файле, например, восьмизначные числа (тип Long), которые занимают в памяти 4 байта, то для каждо­го из них в текстовом файле будет отведено 8 байт - по 1 бай­ту на каждый символ.

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

Eof (номер), результатом которой является логическое значе­ние (True или False).

Для того чтобы открыть текстовый файл. используется опера­тор Open следующего формата:

Open путь For назначение As номер

Здесь, в отличие от формата, используемого при работе с дво­ичными файлами, после служебного слова For в качестве назна­чения для открываемого файла используются:

Input - файл открывается для считывания из него информации;

Output - файл открывается для редактирования его содержимого;

Append - файл открывается для добавления новых строк.

При использовании в операторе Open ключевого слова In­put открываемый файл должен существовать, в противном слу­чае возникнет ошибка. С другой стороны, служебные слова Out­put и Append можно применять как для открытия, так и для создания текстовых файлов. При этом если файл уже открыт, на­пример, для извлечения данных (input), то для добавления строк его необходимо вначале закрыть (Close), а затем открыть с указанием соответствующего назначения (Append).

Для добавления новых строк в файл используется оператор Print, формат которого следующий:

Print # номер, переменная

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

Для изменения содержимого имеющегося текстового файла его необходимо вначале открыть с помощью служебного слова Output, а затем воспользоваться описанным выше оператором Print. В этом случае изменения будут внесены в начало файла.

В языке Visual Basic существует несколько возможных вариантов извлечения информации из текстового файла.

Оператор Line Input - используется для занесения в про­граммные переменные строк из файла. Синтаксис этого операто­ра следующий:

Line Input # номер, переменная

Функция Input — применяется для извлечения в строковую переменную заданного количества символов из файла и имеет следующий формат:

Input(число, номер)

Результатом вызова данной функции является указанное число символов, скопированных из файла с определенным номером.

3. Нетипизированные файлы. Информация в таких файлах хранится в виде набора одинаковых записей определенной структуры. Размер одной записи является значением суммы размеров всех ее полей.

Для того чтобы открыть файл записей, необходимо вос­пользоваться оператором Open, аналогично рассмотренным ранее типам файлов. Однако его формат в этом случае не­сколько отличается от предыдущих, так как необходимо ука­зывать размер записей, которые содержатся в файле:

Open путь [For Random] As номер Len = размер

В этом случае в операторе Open указывать тип с использо­ванием служебного словосочетания For Random необяза­тельно, так как данный режим используется по умолчанию. Размер используемых записей задается при помощи ключевого слова Len. При этом если запись, добавляемая в файл, будет больше указанного размера, то при выполнении операции воз­никнет ошибка.

Для занесения содержимого записи в файл используется оператор Put. как и при работе с двоичными файлами:

Put номер, позиция, переменная

Отличие заключается в том. что под позицией понимается порядковый номер записи в не типизированном файле.

Аналогичным образом для извлечения определенной запи­си из файла в переменную соответствующего типа применяет­ся оператор Get:

Get номер, позиция, переменная

В этом операторе так же, как и в операторе Put, позицией является порядковый номер записи в файле.

Глава 6.3 Объектные модели

Авторы данной книги не ставили перед собой задачу пол­ного описания программирования на языке Visual Basic. Ос­новной задачей было представить читателю средство про­граммирования VBA в пакете Microsoft Office. Для углублен­ного изучения теории программирования, а также подробного рассмотрения среды разработки и языка программирования Visual Basic 6.0 рекомендуется обратиться к книге издательст­ва «Фолио» "Программирование в среде Windows".

Основным понятием в создании приложений на VBA явля­ется понятие объектной модели. Объектной моделью называ­ется совокупность объектов, которые являются элементами одной иерархической структуры и, соответственно, имеют одинаковую область применения. С помощью объектных мо­делей можно выполнять различные действия в приложениях Office, например, устанавливать параметры страницы доку­мента, свойства документа, изменять выделенный объект и его параметры, работать с файловой системой, отображать встро­енные диалоговые окна и т. д.

Каждая структурная единица любой объектной модели представляет собой либо отдельный объект, либо набор или семейство объектов. В свою очередь, набор (collection) также является объектом, но в то же время он является совокупно­стью объектов одинакового типа.

Управление объектами в программном коде осуществляет­ся с помощью изменения свойств и вызова методов того или иного объекта. Наряду со свойствами и методами объектов можно также обрабатывать события, которые происходят с данным объектом.

Если необходимо указать ссылку на тот или иной объект ие­рархической структуры для последующего выполнения каких-либо действий (вызов методов или изменение свойств), то в этом случае следует указывать все предшествующие ему объекты ие­рархии, разделяя их точками. Например, чтобы активизировать документ a.doc, необходимо в программном коде указать сле­дующую команду:

Application.Documents("a.doc").Activate

В данной команде используется ссылка на документ a.doc, который представляет собой объект из набора Documents.

Объектная модель VBA

Под объектной моделью VBA понимается совокупность объектов, которые являются независимыми (т. е. не составля­ют иерархическую структуру) и могут использоваться в любом приложении Office (см. табл. 6.20).

Объектная модель Microsoft Office 2000

Иерархия объектной модели Office представленана рис. 6.22. При этом одно название в структуре, например, As-

sistant. означает наличие объекта на данном уровне иерар­хии, в то время как двумя названиями, например, Command-Bars (CommandBar), обозначаются набор объектов (название перед скобками) и объект из набора (название в скобках). Вер­тикальные линии связи между элементами указывают на раз­ные уровни иерархии.

В таблице 6.21 приведено описание основных объектов данной модели.

Объектная модель Microsoft Word 2000

Иерархия объектной модели Word реализована в виде структуры объектов, которые подчинены объекту Applica­tion, представляющему собой приложение Word. Рассматри­ваемая иерархическая структура состоит из нескольких уров­ней. Все объекты первого уровня представлены на рис. 6.23;

описание основных объектов приведено в таблице 6.22.

Некоторые объекты первого уровня иерархии объектной модели Word представляют собой структуру, состоящую, в свою очередь, еще из несколько уровней. В частности такими объектами являются AutoCorrect, Document, Selection, Template и Window (см. рис.6.23).

На рис. 6.24 представлена иерархия объекта Document, ис­пользуемого для обработки открытых документов Word. Опи­сание основных объектов, входящих в данную структуру, при­ведено в таблице 6.23.

Описание свойств и методов объекта Document приведено в таблицах 6.24 и 6.25, соответственно.

Возможные события для объекта Document приведены в таблице 6.26.

Объектная модель Microsoft Excel 2000

Иерархия объектной модели Excel реализована в виде структуры объектов, которые подчинены объекту Applica­tion. представляющему собой приложение Excel. Данная ие­рархическая структура состоит из нескольких уровней. Все объекты главных уровней представлены на рис. 6.25; описание основных объектов приведено в таблице 6.27.

Некоторые объекты главных уровней иерархии объектной модели Excel представляют собой структуру, состоящую, в свою очередь, еще из нескольких уровней, которые не отобра­жены на рис. 6.25. В частности такими объектами являются Worksheet и Chart.

На рис. 6.26 представлена иерархия объекта Worksheet, используемого для обработки рабочих листов в той или иной рабочей книге Excel. Описание основных объектов, входящих в данную структуру, приведено в таблице 6.28.

В таблицах 6.29 - 6.31 приведено описание основных свойств, методов и событий для объекта Workbook.

Объектная модель Microsoft Access 2000

Иерархия объектной модели Access реализована в виде структуры объектов, которые подчинены объекту Applica­tion, представляющему собой приложение Access. Рассмат­риваемая иерархическая структура представлена на рис. 6.27;

описание основных объектов приведено в таблице 6.32.





Дата публикования: 2015-01-23; Прочитано: 537 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2025 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.302 с)...