9 Июнь 2008

12. Бинарные и текстовые файлы

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

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

При первом открытии файла указатель находится в позиции 1. После любой операции чтения или записи указатель помещается сразу или после прочитанных или записанных данных. Значение файлового указателя можно определить или изменить с помощью оператора Seek и Loc. Можно использовать функцию Eof для определения достижения конца файла.

Для записи данных в бинарный файл используется оператор Put, для чтения оператор get.

Put # fn, pos, var

Get # fn, pos, var

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

Var-объявляем переменную.

Эти операторы автоматически читают и записывают количество байтов, содержащихся в переменной. Если Var – сторона переменной длины, то количество переданных байтов равно количеству символов.

Гибкость с бинарным файлом требует дополнительной работы для отслеживания и сохранения данных. Сдвиг файлового указателя на 1 байт может привести к чтению бессмысленных данных.

Некоторые важные аспекты при работе с бинарными файлами:

  1. чтобы добавить новые данные в конец существующего бинарного файла выполняется оператор Seek # fn, Lot (fn)+1 для перемещения указателя в конец файла. Если записать данные в существующий бинарный файл в позицию перед концом файла новые данные будут записаны поверх существующего.
  2. При записи данных в позицию указателей находящегося за пределами файла они будут расширены до новой длины. Однако часть файла между первоначальным концом файла и новыми данными снижает (снимает) неопределенные значения.
  3. При чтении данных в позицию указателя выход за рамки файла не выдается сообщение об ошибке, но полученные в результате данные будут бессмысленными.

11. Файлы с последовательным и произвольным доступом.

Последовательные файлы представляют собой текстовый файл. Данные в последовательном файле хранят ряд записей. Длина каждой записи не фиксирована, а определяет ее содержимое. Конец одной записи и начало другой отмечается символом CRLE(возврат каретки). Единственный символ в строке обозначает, пустую запись. Последовательные файлы называются так, потому что их записи должны считаться последовательно от начала файла.

Файл с произвольным доступом сохраняет данные как ряд записей фиксированного элемента. Размер каждой записи определяется в момент создания файла. Записи последовательно нумеруются, начиная с 1. Файл с произвольным доступом разрешает непосредственный доступ к каждой записи по ее номеру. Каждая запись в файле с произвольным доступом содержит фиксированное количество файлов или символов. Каждая запись содержит 1 или больше полей и каждое поле имеет фиксированную длину.

Использование файлов с последовательным доступом:

Для записи данных в последовательный файл используется оператор Write # filenum list

Если аргумент list не задан, то в файл записывается пустая строка. Оператор Write автоматически вставляет обязательные разделители между полями, запятые и кавычки. Для чтения данных из последовательного файла используется оператор Input # filenum, Varlist-список переменных. Input-читает данные из файла последовательно.

Если читаются данные переменного типа строки, то конец поля отмечается одним из последовательных файлов: Запятая, если поле не начинается с двойных кавычек, символ возврата каретки CR/LF. Если оператор Input читает данные в числовую переменную конец поля отмечается запятой одним или большим количеством пробелов или символов CR/LF (конец строки).

Использование файлов с произвольным доступом:

Состоит из записей:

Отличие состоит в том, что они состоят (записи одинаковой длины и программа отличает одну запись от другой по ее положению в файле). Записи последовательно пронумерованы, начиная с единицы, а максимальное количество записей 2147483647.

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

User defined type - UDT, представляет собой структуру, содержащую 2 или более элемента.

Для записи данных с произвольным доступом используется оператор Put # fn recnum Item.

Recnum-необязательный элемент, определяющий номер записи в файле, которые должны быть сохранены.

Put # fn,

Our employees (2)

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

NumRecords= Lot (fn)/Len (Item)

Put # fn, NumRecords+1, Item

Для чтения данных из файла с произвольным доступом используются операторы Get # fn, recnum, item.

Некоторые способы работы с файловыми указателями:

Seek (fn)-возвращает текущую позицию файлового указателя

Seek fn, position-устанавливает указатель на указанную позицию

Loc (fn)-возвращает номер последней записи прочитанной или записанной. Если файл только что открыт, возвращает 0.

10. Работа с файлами в VBA.

написано в рубрике: Информационные технологии (Т) — Метки: , , — Михаил @ 21:28

Доступ к файлам VBA подразумевает выполнение 3 действий:

- открытие файла

- чтение или запись файла

- закрытие файла

Имеются 3 разных типа файлов:

- последовательные файлы

- файлы с произвольным доступом

- бинарные файлы

Открытие файлов:

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

Open Filename for mode Access lock

As # filenum LEN = reclen

Filename – строка определяет название файла, который необходимо открыть.

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

APPEND – последовательный доступ к файлу. Если файл уже существует, то данные присоединяются в конец файла, если файл не существует, то они отсоединяются.

BINARU – бинарный доступ к файлу для чтения и записи.

INPUT – последовательный доступ к файлу только для чтения, если файл не существует, то возникает ошибка.

OUTPUT – последовательный доступ только для записи. Если файл существует, он удаляется и создается заново, если не существует, то просто создается.

RANDOM – произвольный доступ для чтения и записи данных. Этот режим используется по умолчанию, если аргумент mod не задан.

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

READ – файл открыт только для чтения.

WRITE - файл открыт только для записи.

READWRITE - файл открыт только для чтения и записи.

Закрытие файлов:

Close # Filenum

Close F1, F2, F3.

Close

9. Объекты Range. Свойства и методы.

написано в рубрике: Информационные технологии (Т) — Метки: , , — Михаил @ 21:27

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

Объект Range можно получить из свойства Range объектов Application, Worksheet или Range. Но работа с этим свойством в указанных объектах отлича­ется друг от друга. Свойство Application.Range ссылается на текущий актив­ный рабочий лист. Таким образом, после выполнения фрагмента

Dim RangeI As Range

Set Rangel=Application.Range(”A2″)

диапазон Range 1 будет ссылаться на ячейку А2 в том рабочем листе, который оказался активным во время работы программы. Как противоположность этому, свойство Worksheet. Range будет ссылаться на конкретный рабочий лист. Сле­дующий фрагмент установит ссылку Range2 на ячейку В2 в рабочем листе SalesData, независимо от того, какой рабочий лист активен в данный момент:

Dim Range2 As Range-

Set Range2=Worksheets(”SalesData”).Range(”A2″)

Свойство Range.Range отличается тем, что оно возвращает позицию относи­тельно первого диапазона. Рассмотрим следующий фрагмент:

Dim Range3 As Range, Range4. As Range

Set Range3=Worksheets(”SalesData”).Range(”B2″)

Set Range4=Range3.Range(”C4″‘)

В результате его выполнения Range4 будет ссылаться вовсе не на ячейку С4, а на D5. Это произошло потому, что данный диапазон устанавливается относитель­но диапазона Range3, который уже ссылается на В2, поэтому и результат смеща­ется соответствующим образом — в данном случае на одну колонку вправо и на одну строку вниз.

8. Диаграммы в Excel.

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

Листы диаграмм и внедренные диаграммы

Рабочая книга Excel имеет два способа отображения диаграмм. Первый метод отображает каждую диаграмму на отдельном рабочем листе, называемом листом диаграммы (chart sheet). Лист диаграммы содержит только одну диаграмму и не содержит колонок и -бтрок данных. Второй метод отображает диаграмму вне­дренной на стандартном рабочем листе. В обоих случаях вид диаграмм остается одинаковым — отличается только способ их отображения.

Листы диаграмм представляются коллекцией Charts,’ которая содержит объ­ект Chart для каждого листа диаграммы заданной рабочей книги (объекта Work­book) или активной рабочей книги (объект Application). Таким образом, сле­дующий фрагмент выведет на печать все листы диаграмм рабочей книги

Sales.xls:

WorkbooksCSales.xls”).Charts.Printout

Добавить новый лист диаграммы в коллекцию можно следующим методом:

Charts.Add

Как и в других коллекциях, каждому листу диаграммы в коллекции Charts можно присвоить имя, чтобы потом по нему обращаться к этому объекту:

Dim ch As Excel,Chart Set ch=Charts.Add Ch.Name=”Sales”

Объект Chart

Каждая диаграмма в рабочей книге, будь она внедренной или расположенной на собственном листе, представлена объектом chart. Данные, которые отобража­ет диаграмма, устанавливаются в методе SetSourceData объекта Chart. Его син­таксис:

MyChart.SetSourceData(Source, PlotBy) Аргумент Source является ссылкой на объект Range, в котором находятся данные для отображения в диаграмме. Этот аргумент является обязательным. Необязательный аргумент PlotBy определяет, будут ли данные организованы в серии по строкам (xlRows, по умолчанию) или по столбцам (xlColumns). Данные, выводящиеся на диаграммы, обычно организованы в прямоугольную таблицу, в которой левая колонка и верхняя строка содержат метки, идентифицирующие данные. Метод содержит и другие аргументы, но они не являются общими. Еще одной важной составляющей создания диаграммы является задание типа диаграммы. Он устанавливается в свойстве ChartType объекта Chart, его возможными значениями являются константы xlChartType. В приложении Excel

имеется 14 основных типов диаграмм, таких как гистограммы, линейные гра­фики и т.п. каждый их этих типов имеет несколько подтипов. Например, кон­станта xlColumnCkastered задает обычную гистограмму, a xlColumnStacked гистограмму с накоплением и т.п. Вместо перечисления здесь всех констант ти­пов диаграмм, я предлагаю для этого воспользоваться окном Object Explorer.

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

Dim c As Excel.Chart Set с = Charts.Add c.ChartType = xl3DColumnClustered

с.SetSourceData Source:=Worksheets(”Лист1″).Range(”B2:F6″) c.Activate

Метод ChartWizard

Метод ChartWizard используется для изменения внешнего вида диаграммы. Это гораздо легче, чем последовательное изменение отдельных свойств диаграм­мы (хотя и такой метод также используется). Его синтаксис:

ChartToModifу.ChartWizard (Source, Gallery, Format, _ PlotBy, CategoryLabels, SeriesLabels, _ HasLegend, Title, ValueTitle, ExtraTitle)

Управление внешним видом диаграммы

Объект Chart имеет сложную структуру. Он имеет множество свойств и мето­дов, которые управляют различными аспектами внешнего вида диаграммы. Он также содержит несколько под объектов, представляющих компоненты диаграм­мы, такие как оси. Таким образом, некоторые манипуляции с диаграммой тре­буют установки соответствующих свойств одного или нескольких подобъектов. Объект Legend представляет легенду диаграммы. Свойства этого объекта управляют общим внешним видом легенды, например, шрифтом и рамкой. Каж­дый отдельный элемент легенды представлен объектом LegendEntry в коллек­ции LegendEntries. Отображение легенды управляется свойством HasLegend объекта Chart, которое может быть установлено в значения True или False.

Каждая ось в диаграмме представлена объектом Axis в коллекции Axes. Внешний вид отдельных осей управляется установкой свойств соответствующего объекта Axis. Количество осей (если они вообще существуют) находится в свой­стве HasAxis объекта Chart.

Объект ChartGroup представляет одну или более серий данных, которые вы­водятся на диаграмму и используют одинаковый формат. Каждая серия данных в объекте ChartGroup представлена объектом Series в коллекции SeriesCol-lection. В большинстве диаграмм один объект ChartGroup содержит лишь одну серию данных.

Объект ChartTitle представляет заголовок диаграммы. Свойства этого объек­та задают текст и его внешний вид.

На двумерных диаграммах объект chart Area представляет область, содержа­
щую оси, наименования осей, наименование диаграммы и легенду. На трехмер­
ной диаграмме он представляет область, включающую заголовок и легенду.
Свойства этого объекта определяют размер и шаблон заполнения фона этой об­
ласти диаграммы. :

Объект PlotArea представляет область самой диаграммы — там, где отобра­жаются данные. Как на двумерной, так и на трехмерной диаграмме область диа­граммы содержит маркеры данных, линии сетки, метки данных и соединительные линии. На трехмерных графиках эта область также содержит стены, основание и оси.

Объекты Floor и Walls представляют основание и стены на трехмерной диа­грамме. Свойства этих объектов управляют цветом и другими аспектами внеш­него вида оснований и стен трехмерной диаграммы.

Новые записи »

© Проект «Студенты-Программеры»., 2008. Все права защищены.
Перепечатка материалов только при наличии активной ссылки на источник.
Powered by WordPress