![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Файлом называется область на жестком диске или другом машинном носителе (например, на дискете), имеющая название и содержащая определенную информацию. При работе с файлами возможны такие операции, как считывание информации в переменные программы и занесение данных из переменных в файлы. Существует несколько разновидностей файлов, которые определяют формат хранения данных и особенности программного доступа к ним:
• типизированные (двоичные файлы);
• текстовые;
• не типизированные (файлы записей).
Рассмотрим все приведенные типы, а также их отличительные особенности.
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 - ключевое слово для определения переменной, содержащей файловый номер, посредством которого будет в дальнейшем осуществляться обработка файла;
номер - имя переменной, содержащей номер файла.
В дополнение к сказанному следует заметить, что в качестве параметра путь может быть указано только название файла. В этом случае работа с файлами будет происходить в том каталоге, который по умолчанию является рабочим в среде Visual 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 ключевого слова Input открываемый файл должен существовать, в противном случае возникнет ошибка. С другой стороны, служебные слова Output и 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 реализована в виде структуры объектов, которые подчинены объекту Application, представляющему собой приложение 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 реализована в виде структуры объектов, которые подчинены объекту Application. представляющему собой приложение 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 реализована в виде структуры объектов, которые подчинены объекту Application, представляющему собой приложение Access. Рассматриваемая иерархическая структура представлена на рис. 6.27;
описание основных объектов приведено в таблице 6.32.
Дата публикования: 2015-01-23; Прочитано: 537 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!