GeoSELECT.ru



Программирование / Реферат: Разработка приложений в рамках COM (Программирование)

Космонавтика
Уфология
Авиация
Административное право
Арбитражный процесс
Архитектура
Астрология
Астрономия
Аудит
Банковское дело
Безопасность жизнедеятельности
Биология
Биржевое дело
Ботаника
Бухгалтерский учет
Валютные отношения
Ветеринария
Военная кафедра
География
Геодезия
Геология
Геополитика
Государство и право
Гражданское право и процесс
Делопроизводство
Деньги и кредит
Естествознание
Журналистика
Зоология
Инвестиции
Иностранные языки
Информатика
Искусство и культура
Исторические личности
История
Кибернетика
Коммуникации и связь
Компьютеры
Косметология
Криминалистика
Криминология
Криптология
Кулинария
Культурология
Литература
Литература : зарубежная
Литература : русская
Логика
Логистика
Маркетинг
Масс-медиа и реклама
Математика
Международное публичное право
Международное частное право
Международные отношения
Менеджмент
Металлургия
Мифология
Москвоведение
Музыка
Муниципальное право
Налоги
Начертательная геометрия
Оккультизм
Педагогика
Полиграфия
Политология
Право
Предпринимательство
Программирование
Психология
Радиоэлектроника
Религия
Риторика
Сельское хозяйство
Социология
Спорт
Статистика
Страхование
Строительство
Схемотехника
Таможенная система
Теория государства и права
Теория организации
Теплотехника
Технология
Товароведение
Транспорт
Трудовое право
Туризм
Уголовное право и процесс
Управление
Физика
Физкультура
Философия
Финансы
Фотография
Химия
Хозяйственное право
Цифровые устройства
Экологическое право
   

Реферат: Разработка приложений в рамках COM (Программирование)




1. Введение 3


2. Обзор COM-технологии 3

2.1. Состав COM-объекта 4
2.2. Интерфейсы 4
2.3. Свойства COM-объектов 6
2.4. COM-серверы 7
2.5. Механизм маршаллинга 7
2.6. Фабрики классов 8
2.7. Библиотеки типов 9
2.8. Диспетчерский интерфейс 10
2.9. Привязка идентификаторов 11
2.10. Пользовательские интерфейсы 11
2.11. Двойные интерфейсы 12

3. Расширения COM 12

3.1. OLE/Active document 13
3.2. Automation 13
3.3. ActiveX control 14
3.4. Межпроцессные визуальные объекты 14
3.5. OPC 14

4. Средства разработки COM-приложений 15



Введение


В данной работе кратко рассмотрена технология COM, которая в
настоящее время широко применяется при разработке программного
обеспечения, интеграции программных продуктов в единые информационные
системы. Целью разработки COM-технологии являлось стремление к интеграции
программного обеспечения через стандартизацию механизмов взаимодействия
программных модулей между собой. На основе данной технологии, которая
является масштабируемой, разработано огромное число технологий, которые
стали стандартами в разнообразных сферах применения информационных
технологий – от управления технологическими процессами в промышленности
до домашних персональных компьютеров. Массовое применение COM отчасти
связано с мощью ее разработчика, фирмы Microsoft. С этим приходится
считаться, и каждый программный продукт, выпущенный под платформу
Windows, для достижения коммерческого успеха обязан соответствовать
инновациям Microsoft.



Обзор COM-технологии


Технология COM (Component Object Technology) – объектно-
ориентированная программная спецификация, предложенная Microsoft. COM
предназначена для повышения надежности взаимодействия программных
продуктов между собой. Данная технология не определяет структуру
программного продукта, язык программирования и прочие детали реализации.
COM является стандартом, который регламентирует модель программного
объекта, соответствующий требованиям COM-технологии. Программный объект,
созданный согласно спецификации COM называется COM-объектом. Данная
технология определяет механизм взаимодействия COM-объектов между собой.
COM относится к так называемым двоичным стандартам, т.к. прилагается к
оттранслированному в двоичный код программному объекту. Взаимодействие
COM-объектов обеспечивается набором предопределенных подпрограмм,
называемыми интерфейсами, доступ к которым обеспечивается через
уникальные идентификаторы интерфейсов GUID (Global Unique Interface
Identifyer), уникальность которых гарантирует операционная система. Такой
механизм схож с использованием указателей при доступе к объектам в
объектно-ориентированных языках программирования, что дает возможность
прозрачного управления объектами, т.к. доступ к ним обеспечивается через
указатели. COM-технология расширяет этот механизм, перенося применение
указателей (в виде GUID) для доступа к объектам на уровень операционной
системы. Таким образом, COM-объекты могут быть прозрачно друг для друга
модифицироваться, т.к. доступ к объектам обеспечивается через GUID. COM
технология включает в себя также библиотеку, в которой содержится набор
стандартных интерфейсов, которые определяют ядро функциональности COM и
небольшой набор API функций, разработанных для создания COM-объектов и
управления ими.
Архитектура COM является расширяемой, и на ней базируются другие
технологии Microsoft, такие как OLE и ActiveX. Эти технологии в настоящее
время являются расширениями операционной системы, и определяют свои
собственные правила работы и предлагают свои библиотеки для создания
объектов и для управления объектами на основе данных технологий.
Используя COM как основу, разработчики программного обеспечения получают
возможность создавать свои собственные расширения таким образом, что
программные объекты созданные, по правилам COM-технологии могут работать
с другими COM-объектами через унифицированный механизм взаимодействия,
который предлагает COM.
COM использует такое понятие как «класс», которое по смыслу означает
то же самое, что и в объектно-ориентированных средствах разработки. COM-
объект является объектом COM-класса (COM class). COM-классы, для различия
с классами в объектно-ориентированных языках, с помощью которых может
создаваться приложение, обычно называются соклассами (CoClass). Далее в
тексте будет использоваться терминология, исходящая из объектно-
ориентированного программирования.



1 Состав COM-объекта


В COM-технологии различаются следующие строительные блоки,
используемые для создания объектов:
. Interface (COM-интерфейс) - множество прототипов функций
(методов), чисто определенных. Термин «чисто определенный
метод» или «абстрактный метод» исходит теории объектно-
ориентированного анализа, и означает, что в определении
класса отсутствует реализация метода, а присутствует только
его определение. От такого класса нельзя создавать объекты.
Его предназначение – описать фундаментальные общности для
всех производных классов;
. COM object (COM-объект) – объект класса CoClass, который
содержит реализацию COM интерфейса;
. COM/ActiveX server (COM сервер или ActiveX сервер)– модуль,
такой как EXE, DLL или OCX, который содержит машинный код COM
или ActiveX объектов;
. Class factory (фабрика классов)– объект, который может
создавать COM-объекты из CoClass;
. Type library (библиотека типов) – файл, содержащий информацию
о типах данных, которые использует COM/ActiveX сервер.



2 Интерфейсы


Интерфейсы являются основными строительными единицами COM. Они
объединяются на семантически связанные группы подпрограмм, через
которые COM-объекты осуществляют взаимодействие:



COM определяет следующие ключевые аспекты, связанные с COM-
интерфейсами:

. Методы интерфейса абстрактны (чисто определены). Интерфейс
представляет собой набор прототипов методов, чье назначение
состоит только в определении интерфейса. Определения прототипов
методов включает в себя определения числа и типов передаваемых
значений, возвращаемого значения, а также ожидаемого поведения
объекта. Как методы реализованы, в определение интерфейса не
включается. Таким образом, реализуется полиморфизм интерфейса,
т.к. каждый потомок, наследующий интерфейс, может включать
собственную реализацию метода;
. Интерфейс подчиняется двоичному стандарту. Так как все методы
интерфейса абстрактны, интерфейс представлен как указатель на
vtable (virtual table). Каждая запись в vtable представляет
собой ссылку на соответствующий метод класса, который содержит
реализацию интерфейса. Определение интерфейса как указателя
устанавливает протокол для доступа к COM-объекту, который
является двоичным. Таким образом, получение доступа к реализации
метода интерфейса объекта представляет собой через
последовательную процедуру получения указателей:

С GUID система связывает указатель на интерфейс. Указатель
на интерфейс, в свою очередь является указателем на vtable,
через которую обеспечивается указатель на таблицу указателей на
код с реализациями методов. Множество объектов одного класса в
системе используют одну общую vtable, и для каждого такого
объекта создается структура с частными данными, необходимыми для
корректного вызова функций.
. Интерфейс включает в себя определенную функциональность. Методы
интерфейса семантически связаны по функциональности и
назначению. Согласно этому, методы интерфейса обычно именуется
согласно своему назначению, и имя предваряется заглавной I. Для
примера, метод IMalloc предназначен для размещения и
освобождения памяти;
. Интерфейс имеет уникальный идентификатор. Интерфейсы различаются
посредством использования глобальных идентификаторов GUID,
которые используются для ссылки на идентификаторы конкретных
интерфейсов IID (Interface Identifier). Каждый интерфейс имеет
свой IID, и при регистрации в системе получает связанный с ним
GUID. Использование GUID более совершенно, чем использование
символьных имен, т.к. гарантирует отсутствие конфликтов имен при
обновлении программных продуктов (выхода новых версий) и при
использовании программного обеспечения от различных
производителей;
. Интерфейс не может измениться после регистрации в системе.
Каждый интерфейс предназначен для выполнения определенной
задачи, и определяет, какие данные поступают на обработку и
какие данные выводятся. Таким образом, после того, как интерфейс
опубликован в системе, и стал доступен для использования, он не
должен меняться. Любое изменение в семантике интерфейса ведет к
необходимости оявления нового интерфейса. Однако существует
возможность безопасной реализации многоинтерфейсных объектов
посредством использования для доступа к разным версиям
интерфейса разные IID.
. Интерфейсы наследуют функциональность от одного базового предка.
Все интерфейсы прямо или косвенно являются потомками интерфейса
IUnknown. Этот интерфейс обеспечивает базовую функциональность
интерфейса, которая включает в себя динамический опрос объекта
(dynamic quering) и управление жизненным циклом объекта
(lifetime managment). Эта функциональность обеспечивается тремя
методами интерфейса IUnknown: QueryInterface, AddRef и Release.
Каждый класс, который реализует интерфейс, должен реализовать
эти три метода, наряду с методами, унаследованные от другого
интерфейса, и своими собственными методами. Ниже представлено
краткое описание функционального назначения упомянутых методов:
- QueryInetrface обеспечивает опрос объекта и доступ к
указателю на интерфейс. QueryInerface является первой
записью в vtable, и предлагает эффективный путь для
определения возможностей объекта, в простейшем случае
через этот метод при установлении связи обеспечивается
передача указателя на интерфейс IUnknown тому объекту,
который пытается получить доступ к данному объекту.
Данный метод также делает возможным обновление COM
объекта без потерь на обновление остальных зависимых
объектов, т.к. объект может быть динамически опрошен
клиентами через указатель на IUnknown. Это функция носит
название dynamic quering;
- AddRef и Release находятся на втором и третьем местах в
vtable. Это простые счетные функции, которые
предоставляются для управления временем жизни объекта.
Пока внутренний счетчик объекта, отражающий количества
раз вызова AddRef и Release больше нуля (вызов AddRef
может увеличивать его значение), объект остается в
памяти. Как только значение счетчика достигает нуля
(вызов Release может уменьшать его значение), реализация
интерфейса может безопасно удалить все зависимые
нижележащие объекты. Это функция носит название lifetime
managment;


3 Свойства COM-объектов


COM-объект – это объект CoClass, который является классом,
реализующим один или более интерфейсов. COM-объект предоставляет
функции, которые доступны через указатель на один из его интерфейсов.
Всвязи с этим, COM-объект обладает следующими особенностями:
. COM-объект защищен от прямого изменения внешними программами
в своих данных, т.к. доступ к COM-объекту возможен только
через указатель на интерфейс;
. COM-объект может быть использован приложениями,
реализованными практически на любых современных средствах
разработки приложений (алгоритмических языках), с любой
внутренней организацией приложения, главное, чтобы средство
разработки позволяло работать с указателями на структуры, на
массивы и на функции.



4 COM-серверы


Объект COM-класса должен иметь в своем составе фабрику классов,
и идентификатор класса CLSID (Class Identifier), так чтобы COM-объект
мог быть создан на основе существующего модуля.

COM-сервер – это приложение, или библиотека, предоставляющее
определенный набор сервисных функций для клиентских приложений или
библиотек.
COM-сервер состоит из COM-объектов. Например, COM-сервер,
который включает в себя код элементов управления ActiveX (ActiveX
control)– является ActiveX-сервером. Для разработчика имеется большое
число библиотек, которые можно использовать для создания COM-объектов.
В качестве примера можно привести библиотеку Microsoft Active Template
Library, предоставляющую набор шаблонов, на основе которых можно
создавать свои собственные программные продукты, построенные по COM-
технологии. Например, шаблон для COM-сервера включает в себя код для
основных функций, которые должен обеспечивать COM-сервер: регистрация
сервера в системе, загрузка/выгрузка сервера, создание объектов,
управления фабриками классов, обеспечение выдачи информации о сервере,
включая: тип сервера, help-файл, имя сервера, библиотека типов и т.д.

Клиенты не должны знать, каким образом сервер выполняет свои
функции, и клиенты не должны знать, где сервер находится – все
взаимодействие осуществляется через указатели на интерфейс сервера.
COM-сервер может быть следующих типов:

. In-process server (внутренний сервер) – программный DLL
модуль, работающий в рабочем пространстве памяти клиентского
приложения:



. Local server (локальный сервер) – программный EXE модуль,
работающий в отдельном адресном пространстве;

. Remote server (удаленный сервер) – программный EXE модуль,
работающий на удаленной машине:



5 Механизм маршаллинга


Разница между внутренним и удаленным серверами в том, какой тип
межпроцессной связи используется. В данном случае существует
необходимость использования посредников, которые обеспечивают
передачу параметров и вызов функций. Такой механизм называется
маршаллингом (marshalling). Т.к. в случае, когда клиент и сервер
находятся в разных адресных пространствах, доступ к ресурсам не может
быть осуществлен непосредственно через указатели. Поэтому посредники
со стороны клиента (proxy) осуществляют упаковку аргументов в пакеты
маршаллинга (marshalling packets), и обеспечивают удаленный вызов
процедур (Remote Procedure Call). Посредник со стороны сервера (stub)
реализуют распаковку параметров, и помещение их в стек. Далее
осуществляется вызов непосредственно реализации метода. По сути,
сервер создает клиентский вызов процедуры в своем собственном
адресном пространстве.



Посредники используют COM-средства, для осуществления
взаимодействия в разных процессах. Для взаимодействия объектов,
находящихся на разных машинах, используются средства расширения COM –
распределенная COM (Distributed COM или DCOM). COM предлагает
стандартный механизм маршаллинга – интерфейс диспетчеризации (Dispatch
Interface).


6 Фабрики классов


Фабрики или производители классов (class factories) -
специальный тип COM-объектов, используемый для создания и регистрации
COM-объектов. Производители классов реализуют стандартный механизм
создания объектов COM-классов. Классы без идентификаторов класса
(CLSID) и фабрики классов могут быть созданы посредством вызова
конструктора. Использование фабрики классов для создания объектов
означает, что для клиентского приложения, которому необходимо создать
объект класса, не нужно знать об этом классе ничего, кроме его
идентификатора CLSID. Фабрика классов возьмет вызов конструктора на
себя, включая передачу аргументов в конструктор и остальные
специфичные действия. Класс фабрики классов может быть объединен со
многими COM-классами, для каждого из которых могут создаваться
объекты. При создании же объекта фабрики классов, в конструктор
передается идентификатор CLSID класса, для создания объектов которого
предназначается фабрика. Этот идентификатор определяет, объекты какого
класса могут быть созданы с помощью данной фабрики классов. Таким
образом, каждый экземпляр фабрики классов в системе может быть
использован для создания объектов только одного определенного класса.

Создание объекта класса производится посредством следующих
действий:
. вызова глобальной API-функции CoGetClass, которая ищет
в системном реестре зарегистрированный класс с данным
CLSID, определяет путь к серверу, загружает сервер и
выдает указатель на интерфейс производителя классов
(обычно IClassFactory);
. Указатель на IСlassFactory может быть использован для
вызова методов производителя классов, например:
CoCreateInstance (создание объекта);

Альтернативой рассмотренному методу может служить вызов
глобальной API-функции CoCreateInstance, которая выполняет
перечисленный выше действия и создает объект класса с идентификатором
CLSID, но таким образом можно создать только один объект данного
класса, т.к. функция не возвращает указатель на интерфейс
производителя классов.


7 Библиотеки типов


Библиотека типов (type library) предоставляет информацию об
используемых типах объектов и интерфейсах, которые предоставляются
ActiveX-серевером. Библиотека типов по смыслу аналогична, например,
заголовочному файлу (header) для разработок на языке C и любому
другому модулю, содержащему информацию об используемых типах данных и
объектах. Большинство информации подобного рода может быть записано в
библиотеку типов. Получить информацию из библиотеки типов можно путем
опроса запущенного объекта или же посредством загрузки
непосредственно библиотеки типов. После создания библиотеки типов, к
ней обеспечивается доступ через специальный тип интерфейсов: ITypeLib,
ITypeInfo и ITypeComp. Интерфейс ITypeLib обеспечивает доступ к
информации о типах в библиотеке типов, а также к описаниям конкретных
объектов, которые, в свою очередь, могут быть получены через
интерфейс ITypeInfo.
Библиотека типов содержит информацию о том, какой интерфейс, в
каком COM-объекте содержится, количество и тип методов интерфейсов и
их параметров. Эти описания включают в себя уникальные идентификаторы
классов (CLSID) и их интерфейсов (IID), через которые осуществляется
корректный доступ к объектам. В библиотеке типов также может
содержаться следующая информация:
. Описания пользовательских типов данных, связанных с
пользовательскими интерфейсами;
. Функции, которые экспортируются ActiveX-сервером, но
которые не являются интерфейсными методами;
. Информация об энумерованных типах данных (символьных
константах);
. Ссылки на описания типов в других библиотеках типов.

Использование библиотеки типов очень важно для объектов, которые
предназначены для распространения и последующего использования многими
пользователями. Также существует еще ряд причин использования
библиотек типов:
. Объекты, которые используют непосредственную привязку к
vtable, должны быть описаны в библиотеке типов, т.к.
ссылки в vtable формируются во время компиляции;
. Объекты, созданные из классов, которые поддерживают
интерфейс IProvideClassInfo, должны иметь библиотеку
типов. Объекты, имеющие в своем составе данные интерфейс,
являются типизированными COM-объектами, т.к. предоставляют
информацию об используемых типах (из библиотеки типов);
. Элементы управления ActiveX должны иметь библиотеку типов,
которая содержится непосредственно в DLL или OCX файле,
содержащем код ActiveX-сервера;
. Приложения, которые являются Automation-серверами, должны
иметь библиотеку типов, для более удобно связывания с
клиентами;
. Использование библиотеки типов в любом случае облегчает
работу с внешними приложениями, которые могут узнать об
используемых типах данных, и т.о. исключается
использование более громоздкого метода передачи параметров
в системе через универсальный механизм;


8 Диспетчерский интерфейс


Диспетчерский интерфейс (dispatch interface) – стандартная
специальная реализация интерфейса IDispatch, которую предлагает COM.
Данная реализация обеспечивает выполнение процедур позднего
связывания (late binding) и маршаллинга. Диспетчерский интерфейс
хранит внутри себя таблицу диспетчерских идентификаторов (dispID),
каждый из которых является уникальным идентификатором члена
интерфейса, и таблица, по сути, реализует отображение
соответствующего dispID на имя каждого члена интерфейса. Клиент,
желающий получить доступ к ресурсу сервера (к методу или к свойству),
должен знать dispID для соответствующего ресурса. Такую информацию
можно получить через вызов метода интерфейса IDispatch, который
называется GetIDsOfNames, и который является первой записью в vtable
для интерфейса IDispatch. Таким образом, клиент получает информацию
типах данных, используемых сервером, и получает таблицу
диспетчерских идентификаторов, с отображением имени каждого ресурса
сервера на соответствующий dispID. Данная операция и со стороны
клиента, и со стороны сервера, при использовании стандартной
реализации интерфейса IDispatch реализуется автоматически. Эта
процедура называется поздним связыванием, т.к. осуществляется на
этапе выполнения программы, а не на этапе компиляции. Имея для
каждого имени ресурса сервера соответствующий dispID, клиент может
осуществить обращение к нему, используя метод интерфейса dispID,
который именуется Invoke. Метод Invoke имеет сигнатуру, допускающую
вызов с любым количеством параметров, чем обеспечивается его
универсальность. Реализация Invoke распаковывает параметры и
осуществляет вызов соответствующего метода или свойства и
осуществляет контроль над выдачей исключений при выполнении метода
или свойства. Когда выполнение метода или обработка свойства
заканчивается, возвращаемые значения метода или свойства отправляются
обратно клиенту. Если обращение клиента к серверу переходит через
границы процесса или машины, то автоматически реализуются все
действия по организации маршаллинга. Такая прозрачность является
основным достоинством использования интерфейса диспетчеризации.
Основным недостатком диспетчерского интерфейса является
ограничение на типы данных, которые можно использовать при передаче
параметров. Это следует из необходимости упаковки и распаковки
параметров при осуществлении маршаллинга. Допускается использовать 13
стандартных типов данных. На пользовательские типы данных
устанавливаются достаточно строгие ограничения. Если требования
задачи не укладываются в эти ограничения, разработчик имеет
возможность реализовать маршаллиг, путем написания своего proxy/stub
кода. Еще одним недостаток проявляется в том, что при компиляции
программы не выполняется проверка соответствия типов вызываемых
функций, т.к. связывание диспетчерских интерфейсов осуществляется на
этапе выполнения программы, и таким образом, не контролируется вызов
Invoke с неверным набором аргументов, что вызывает ошибку выполнения.


9 Привязка идентификаторов


COM предлагает возможность привязки диспетчерских интерфейсов на
этапе компиляции. Если объект описан в библиотеке типов, то dispID
может быть прочитан для каждого ресурса объекта, т.к. dispID является
для каждого метода или свойства фиксирован, и является частью
описания используемых типов данных объекта. Такая процедура
называется привязкой идентификаторов (ID bindig). Метод GetIDsOfNames
вызывается компилятором во время трансляции программы, таким образом,
привязка идентификаторов является формой раннего связывания (early
binding). В результате, на этапе выполнения, при первом вызове
сервера клиентом, не требуется вызов процедуры привязки интерфейсов,
что ускоряет работу. Еще одним достоинством данного подхода является
проверка соответствия типов в обращениях к ресурсам сервера.
Основным недостатком является отсутствие возможности проверки
имени ресурса, если он вдруг изменился. В клиентском объекте все
вызовы будут осуществляться через однажды связанные на этапе
компиляции интерфейсные идентификаторы.


10 Пользовательские интерфейсы


Vtable-интерфейсы (vtable interfaces) или пользовательские
интерфейсы - определяются пользователем, и допускают вызывать методы
интерфейса, пользуясь ссылками из vtable, при условии, если известен
порядок записи ссылок на методы, число и тип передаваемых аргументов.
Первые три записи в vtable соответствуют трем методам интерфейса
IUnkown, за которыми следуют ссылки на остальные поддерживаемые
интерфейсы. Если объект не реализует диспетчерский интерфейс, то
следом за IUnkown непосредственно следуют ссылки на методы
пользовательских интерфейсов, то есть, становится возможно обращение к
методам и свойствам объектов непосредственно через ссылки из vtable.
В случае если сервер имеет библиотеку типов и реализует
диспетчерский интерфейс, то клиент может получить информацию из
библиотеки типов, без осуществления вызова функций через привязки.
Достаточно получить идентификаторы dispID диспетчерского интерфейса, и
осуществить привязку непосредственно к vtable. Таким образом, можно
осуществить более быстрый доступ к ресурсам объекта, осуществляя
прямой вызов через ссылки в vtable, не используя диспетчерский
интерфейс. Код непосредственной привязки к vtable может быть
автоматически сгенерирован на этапе компиляции. Разумеется, такой
метод вызова функций гораздо быстрее, чем методы привязки
идентификаторов (т.к. вызов осуществляется через Invoke, что вызывает
процедуры упаковки/распаковки параметров) и позднего связывания (т.к.
осуществляется полный цикл работы с диспетчерским интерфейсом).



11 Двойные интерфейсы


Несмотря на то, что COM предоставляет возможность обращения к
ресурсам серверов используя vtable-интерфейсы, что повышает скорость
взаимодействия клиента и сервера, некоторые клиенты могут быть
разработаны таким образом, что обращаются к объектам только через
интерфейс диспетчеризации. Это могут быть, например, интерпретируемые
макроязыки, которые включают в себя средства для работы с COM-
объектами, и в которых не реализованы возможности для привязки к
vtable. Таким образом, COM предлагает то, что называется
двойственным, или двойным интерфейсом (dual interface). Двойные
интерфейсы предлагают два пути для доступа к ресурсам сервера: через
диспетчерский интерфейс и через vtable-интерфейс. Двойной интерфейс
определяется как наследник IDispatch.
Преимущества использования двойных интерфейсов:
. Двойные интерфейсы предлагают возможность получения
указателей на ресурсы сервера по их именам при
компиляции объекта, таким образом, позволяя создавать
клиентов, с привязкой к vtable на этапе компиляции;
. Двойные интерфейсы позволяют клиентам осуществить прямой
доступ к ресурсам сервера через vtable-интерфейсы, что
увеличивает скорость взаимодействия объектов;
. Двойные интерфейсы имею преимущества проверки
соответствия типов на этапе компиляции (преимущества
раннего связывания);
. Клиенты, не работающие напрямую с vtable-интерфейсами
имеют возможность взаимодействовать с объектами через
диспетчерские интерфейсы;
. Двойные интерфейсы предоставляют возможность маршаллинга
для обоих своих частей – для диспетчерского интерфейса и
vtable-интерфейса. При обращении к серверу, находящемуся
в другом адресном пространстве осуществляется
автомаршаллинг при обращении через любую часть
интерфейса.

Существует набор ограничений по использованию двойных
интерфейсов. Они в основном связаны с типами данных, т.к. двойной
интерфейс является наследником интерфейса IDispatch. Однако,
существует путь для частичного избежания таких ограничений, определяя
не двойной интерфейс, а два отдельных, один из которых –
диспетчерский, другой - пользовательский (без ограничений на тип
данных). Таким образом, можно осуществить доступ к ресурсам сервера
как через диспетчерский, так и через vtabl-интерфейс.



Расширения COM


Одним из расширением технологии COM является OLE, представляющая
собой библиотеку собственных интерфейсов, типов данных и подпрограмм,
предназначенных для обеспечения функциональности OLE. Каждая функция
именуется с префиксом IOle.
Еще одним расширением COM является не так давно созданная
технология ActiveX. Основные ответвления ActiveX носят названия
ActiveX Documents (документы ActiveX) и элементы управления ActiveX
(ActiveX controls). ActiveX «моложе» OLE, и была разработана как COM-
расширение, оптимизированное по скорости и по размеру. Однако, OLE с
появлением ActiveX уже была неплохо развита, и сейчас различия между
этими двумя технологиями начинают уменьшаться, а их функциональности
все больше перекрываться.


1 OLE/Active document


Документы OLE (OLE/Active documents) – один из набора сервисов,
которые предлагает технология OLE. Объекты OLE documents имеют все
свойства OLE по связи и внедрению данных, визуального редактирования,
поддержки drag-and-drop, активизации по месту (in-place-activation).
Используя OLE document можно определить любой количество интерфейсов,
через которые обеспечивается стандартное поведения объекта, такое как
визуальное редактирования и drag-and-drop. Посредством реализации этих
интерфейсов, объекты OLE documents могут быть свободно объединены в
единую систему взаимодействующих объектов с разными форматами данных,
таких, как звуковые фрагменты, текстовые документы и растровые
изображения.
Объект OLE documents может быть реализован как внутренний и
внешний COM-сервер. Такой объект состоит из двух частей: визуальной
(presentation data), предназначенной для отображения визуальной части
объекта и из внутренней части (native data), используемой для
редактирования объекта. Объекты OLE documents могут быть контейнерами
документов (document container) и серверами документов (document
server). Сервер документов обеспечивает функциональность объектов OLE
documents. В среде контейнера документов может быть активизирован
любой сервер документов.


2 Automation


Технология автоматизации (automation) предлагает возможность
программного управления одного приложения другим. В данной технологии
различаются две составные компоненты:
. Клиентская часть, называемая контроллером автоматизации
(automation controller);
. Серверная часть, которая носит название объекта
автоматизации (automation object) – объект, которым
управляет клиент.

Объекты автоматизации могут быть реализованы как внутренние,
внешние и удаленные сервера. Технология автоматизации характеризуется
двумя положениями:

. Объекты автоматизации должны иметь возможность
определить множество свойств и команд через описания
типов, т.е. они должны получить информацию об
интерфейсах объекта, с которым идет взаимодействие, о
методах интерфейсов и о типах аргументов. Такая
информация предоставляется через библиотеки типов.
Однако, использование библиотеки типов необязательно при
использовании интерфейса диспетчеризации, т.к. с помощью
последнего осуществляется привязка интерфейсов на этапе
выполнения программы (недостатком такого подхода
является отсутствие проверки соответствия типов на этапе
компиляции);
. Объекты автоматизации должны предоставлять свои методы
общедоступными для внешнего использования, так, чтобы
ими могли пользоваться внешние приложения. Для этого, в
объектах автоматизации должен быть реализован интерфейс
диспетчеризации.

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


3 ActiveX control


Технология ActiveX расширяет COM и OLE новыми функциями,
специфичными для элементов управления ActiveX (ActiveX control).
ActiveX control – визуальные объекты управления, реализуемые как
внутренние COM-сервера, и которые включаются в OLE-контейнеры, и
работают в их среде. Элементы управления ActiveX не являются
законченными приложениями, но представляют собой объект, который
решает некоторую частную задачу и может быть встроен в различные
приложения. Основными характерными особенностями ActiveX controls
является возможность обработки событий, привязки к источникам данных и
поддержка лицензирования.
Элементы управления ActiveX особенно широко используются в
разработке Web-приложений, где ActiveX controls используются как
интерактивные объекты на Web-страницах. По существу, ActiveX
становится стандартом, специально направленным на интерактивную часть
World Wide Web, например, для просмотра в Web-браузере не
гипертекстовых документов, доступ к базам данных и т.д.


4 Межпроцессные визуальные объекты


Объекты автоматизации, документы OLE и элементы управления
ActiveX являются общими используемыми объектами для всех приложений.
Менее общее использование COM-объектов присутствует в межпроцессных
объектах, которые визуально отображаются и используются в
многопроцессных приложениях. Эти типы объектов гораздо сложнее
создавать, т.к. протокол взаимодействия, применяемый в управлении
визуальными объектами в мнопроцессных приложениях стандартизован
только для визуальных объектов, которые используют интерфейс OLE
document. Следовательно, необходимо создать пользовательские
интерфейсы объектов и их реализации, которые будут управлять
маршаллингом интерфейсов. Также, это можно реализовать через:
. Использование двойственного интерфейса IDispatch,
который поддерживает автомаршаллинг;
. Написание собственного класса, реализующего маршаллинг.



5 OPC


Спецификация одной из модификаций OLE, которая называется OPC
(OLE for Process Control) была разработана группой фирм, занимающихся
разработкой программного обеспечения для систем промышленной
автоматизации. Данная технология включает в себя набор стандартных
соглашений, применяемых в системах промышленной автоматизации. В
настоящее время особое развитие получило использование OPC как
связующей механизм взаимодействия отдельных компонент SCADA-систем,
а также систем различных производителей друг с другом, обеспечивая
эффективную по времени и стоимости интеграцию компонент программного
обеспечения. Связь по OPC осуществляется прозрачно для разработчика,
используя все средства, которые предоставляет COM, что позволяет не
внедряясь в технику связи организовывать взаимодействующие в единых
информационных системах программные компоненты.


Средства разработки COM-приложений


Основным инструментом разработки COM-приложений, что
закономерно, являются продукты Microsoft, относящиеся к семейству
визуальных средств программирования Visual Studio. Все компоненты
этого семейства предлагают средства работы по технологии COM, и
направлены в основном именно на разработку продуктов в рамках этой
технологии.
Основной фигурой для рассмотрения в данном разделе будет
семейство средств разработки приложений фирмы Inrise Inc., относящиеся
к классу RAD (Rapid Application Development) – средства быстрой
разработки приложений. Это продукты Borland С++ Builder и Borland
Delphi, которые начиная с версии 3 поддерживают разработку COM-
приложений.
С++ Builder и Delphi (далее, просто C++ Builder, т.к. оба этих
продукта предоставляют идентичные возможности, даже более того,
используют одни и те же объектные библиотеки) предлагают набор
готовых компонент, используя которые как шаблоны, можно легко начать
разработку приложения в рамках COM. C++ Builder предлагает набор
классов с реализаций основных функций интерфейсов IDispatch,
пользовательских и двойных интерфейсов, работы с библиотеками типов и
фабриками классов. Форма, созданная в визуальном редакторе легко
портируется в COM-класс, с перенесением всех свойств и методов
автоматически в библиотеку типов. Работа над описанием интерфейсов и
объектов не требует знания языка описания интерфейсов IDL (interface
definition language) и языка описания объектов ODL (object definition
language), т.к. вся работа ведется в визуальном редакторе. Код на IDL
все равно создается, но этот процесс может быть для разработчика
прозрачен.






Реферат на тему: Разработка приложений на языке VBA в среде MS EXCEL по обработке данных для заданных объектов
Министерство высшего и среднего образования Российской Федерации
Иркутский Государственный Технический
университет



Факультет Технологии и Компьютеризации Машиностроения
Кафедра Технологии Машиностроения
Курсовая работа по информатике на тему
«Разработка приложений на языке VBA в среде MS EXCEL по обработке данных
для заданных объектов»



Выполнили студенты группы ИСМ-03-1
Козулин С.П, Кононов И.В
Проверил: Буренков С.И_____________



Иркутск, 2004

План
1. Как все начиналось

- QuickBasic против TurboBasic


-Эпоха Visual Basic


-Visual Basic for Applications



2. Обработка модулей VBA


-Переименование, Удаление, Создание, Добавление, Экспорт, Импорт модулей
проекта


- Импорт и экспорт модуля из проекта в проект


- Импорт модуля через экспортируемый файл (а также модулей обычного VB)


- Редакция модуля


- Обработка модулей VBA программно


- Экспорт модуля проекта в файл


- Импорт модуля проекта из файла


- Импорт модуля через организатор (данный код только для Word приложения)


- Вставка новых строк в модуль проекта


- Удаление строк из модуля


- Чтение строк из модуля


- Определение количества строк в модуле


- Переименование модулей проекта


- Удаление модулей проекта


- Определение количества модулей в проекте


- Создание нового модуля проекта


3. Постановка задачи и ее решение

4. Список использованной литературы



Как все начиналось

Язык Basic был разработан профессорами Дартмутского колледжа Дж.Кемени и
Т.Курцом в 1965 году как средство обучения и работы непрофессиональных
программистов. (Дартмутский колледж в штате Нью-Гампшир, США, был создан в
середине 18 века, это одно из старейший высших заведений Америки). Его
назначение определено в самом названии, которое является аббревиатурой слов
Beginner's All-purpose Symbolic Instruction Code (многоцелевой язык
символических инструкций для начинающих) и при этом в дословном переводе
означает "базовый".
Примечание. Раньше языки программирования писались обязательно строчными
буквами — BASIC, FORTRAN. В 1990 году Международная организация стандартов
приняла решения, что они пишутся как обычные имена собственные — строчной
является только первая буква.
Однако парадокс заключается в том, что, будучи действительно весьма простым
средством программирования, совершенно непригодным в те времена для решения
серьезных задач, Basic представлял собой качественно новую технологию
создания программ в режиме интерактивного диалога между разработчиком и
компьютером. То есть представлял собой прообраз современных систем
программирования. Другое дело, что решение подобной задачи на технике тех
лет было возможно только за счет максимального упрощения языка
программирования и использования транслятора типа "интерпретатор".
В силу этих же причин Basic в основном применялся на мини - и микроЭВМ,
которые в 70-е годы имели оперативную память, объем которой кажется сегодня
просто нереальным (4-32 тысяч байт). Резкое развитие систем на основе Basic
началось с появлением в начале 80-х годов персональных компьютеров,
производительность и популярность которых растет вот уже двадцать лет
невиданными темпами.

QuickBasic против TurboBasic

В конце 80-х годов насчитывалось около десятка систем Basic различных фирм-
разработчиков. Однако главная борьба шла между QuickBasic (компания
Microsoft) и TurboBasic (Borland). Вообще-то, конкуренция между этими двумя
разработчиками средств программирования шла по целому спектру языков —
Basic, Pascal и C. И результатом ее в 1989 году стало неявное мировое
соглашение, когда Microsoft отказалась от дальнейшей поддержки Pascal, а
Borland — Basic.
Тогда многие комментаторы язвительно замечали, что Microsoft отказалась от
Pascal в пользу Basic исключительно из-за личных пристрастий основателя и
руководителя корпорации Билла Гейтса. Действительно, разработка в 1975 году
интерпретатора Basic для микроЭВМ Altair 8800 была первым проектом
двадцатилетних Билла Гейтса и Пола Аллена, только что основавших фирму
Micro-Soft (в то момент они были единственными сотрудниками новой
компании). После этого именно Пол Ален занимался созданием Basic-систем и
считается крестным отцом Visual Basic. В свою очередь Билл Гейтс,
перечисляя свои титулы, довольно часто добавляет "Basic-программист".
Однако, как мне представляется, победа QuickBasic определялась чисто
технологическими причинами — в этой системе была удачно реализована схема
смешанного использования традиционных Basic-технологий и классических
методов создания сложных программных систем. Отметим, что с 1990 года
усеченный вариант QuickBasic под названием QBasic был включен в состав MS-
DOS. (Многие современные пользователи ошибочно думают, что QuickBasic и
QBasic — одно и то же.)

Эпоха Visual Basic

В начале 90-х годов Microsoft начала активную борьбу за продвижение в массы
своей новой операционной системы Windows (против своей же, но более уже
устаревающей MS-DOS). Но, как известно, пользователи работают не с ОС, а с
программами, которые работают в нее среде. Поэтому скорость смены платформы
в основном определяется темпами появления соответствующих прикладных
программ.
Однако смена операционных систем представляет серьезную проблему и для
программистов, так как им нужно было осваивать новую технологию разработки
программ. В тот момент бытующим (и в значительной степени, совершенно
справедливым) мнением было то, что Windows предъявляет более высокие
требования к квалификации программиста.
В 1991 году под лозунгом "теперь и начинающие программисты могут легко
создавать приложения для Windows" появилась первая версия нового
инструментального средства Microsoft Visual Basic. В тот момент Microsoft
достаточно скромно оценивала возможности этой системы, ориентируя ее,
прежде всего, на категорию начинающих и непрофессиональных программистов.
Основной задачей тогда было выпустить на рынок простой и удобный инструмент
разработки в тогда еще довольно новой среде Windows, программирование в
которой представляло проблему и для опытных специалистов.
Действительно, VB 1.0 в тот момент был больше похож не на рабочий
инструмент, а на действующий макет будущей среды разработки. Его
принципиальное новшество заключалось в реализации идей событийно-
управляемого и визуального программирования в среде Windows, которые весьма
радикально отличались от классических схем разработки программ. По общему
признанию VB стал родоначальником нового поколения инструментов, называемых
сегодня средствами быстрой разработки программ (Rapid Application
Development, RAD). Сегодня эта идеология считает привычной, но тогда она
казалась совершенно необычной и создавала серьезные проблемы (в том числе
чисто психологического плана) для программистов "старых времен".
Тем не менее, число VB-пользователей росло, причем во многом за счет
огромной популярности ее предшественника — QuickBasic. При этом VB быстро
"мужал", усиливаясь за счет, как развития среды программирования, так и
включения профессиональных элементов языка и проблемно-ориентированных
средств. И к моменту выпуска в 1995 году VB 4.0 эта система была уже
признанным и одним из самых распространенных инструментов создания широкого
класса приложений. В настоящее время используется версия VB 6.0, появление
версии 7.0 ожидается в начале следующего года.

Visual Basic for Applications

В начале 90-х годов наметилась отчетливая тенденция включение в приложения,
предназначенные для конечного пользователя, средства внутреннего
программирования, которые должны были решать задачи настройки и адаптации
этих пакетов для конкретных условий их применения.
В конце 1993 г. Microsoft объявила о намерении создать на основе VB новую
универсальную систему программирования для прикладных программ, которая
получила название Visual Basic for Applications (VB для приложений).
Естественно, реализацию этого проекта она начала с собственных офисных
пакетов.
Первый вариант VBA 1.0 появился в составе MS Office 4.0, но лишь в
программах Excel 4.0 и Project 6.0. В других же приложениях - Word 6.0 и
Access 2.0 - были собственные варианты Basic. Более того, VBA 1.0 довольно
сильно отличался (причем имея ряд существенных преимуществ) от используемой
тогда универсальной системы VB 3.0.
Качественный перелом наступил в конце 1996 года с выпуском MS Office 97, в
котором была реализована единая среда программирования VBA 5.0, включенная
в программы Word, Excel и PowerPoint. Более того, VBA 5.0 использовала тот
же самый языковый механизм и среду разработки, что и универсальная система
VB 5.0. В состав выпущенного год назад MS Office 2000 вошла соответственно
версия VBA 6.0, которая используется в шести программах - Word, Excel,
PowerPoint, Access, Outlook, Frontpage.
В результате последние три года Microsoft позиционирует сегодня свой пакет
MS Office не просто как набор прикладных программ, а как комплексную
платформу для создания бизнес-приложений, решающих широкий круг
специализированных задач пользователей. Именно этим объясняется появлением
в его составе специального выпуска для разработчиков приложений — Developer
Edition.
Одновременно, VBA активно продвигает в качестве отраслевого стандарта для
управления программируемыми приложениями, объявив о возможности его
лицензирования. Сегодня уже более ста ведущих мировых фирм-разработчиков
прикладных программ (среди них есть о российские) приобрели лицензии на
него и включают VBA в состав своих программных продуктов.
Вывод из сказанного выше. Освоение механизма программирования VBA,
реализованного в офисном приложении, которое установлено на вашем
компьютере, откроет вам возможность использования полученных знаний и
навыков при работе с десятками и сотнями других программ, в том числе и
тех, которых пока еще нет на свете. Начав с составления простейших
макрокоманд, при желании можно в рамках одного инструментария стать
профессионалом, разрабатывающим программные системы любой сложности.
Десять лет назад во всем мире было не более двух миллионов программистов.
Сегодня их насчитывается около десяти миллионов, из них не менее 70
процентов используют в качестве хотя бы одно из инструментов VB или VBA.



Обработка модулей VBA



Проект – Файл приложения Microsoft Office, в котором написана программа VBA

Приложение – Приложение Microsoft Office (Word, Excel, Access, Power Point
и др.)

Модуль – Именованная область в файле проекта содержащая в себе код,
написанный на языке VBA

Окно проекта – “дерево”, содержащее на себе все “деревья” загруженных
проектов, “дерево” состоит из имен модулей.

Редактор VBA – редактор встроенный внутри приложения, позволяющий писать и
редактировать программы на языке VBA.


Для перехода в редактор VBA можно воспользоваться пунктами меню: Сервис-
Макросы-Редактор Visual Basic (Рис.1) (В Access выбрать закладку модулей
или форм, выбрать мышью нужный объект, зайти в меню: Вид-Программа)

Для открытия окна проекта, необходимо воспользоваться пунктами меню
редактора VBA: Вид-Дерево проекта

Двойным кликом мыши по папке с именами модулей можно открыть ее.

Двойным кликом мыши по имени модуля, можно активизировать окно редактора
нужного вам модуля.
[pic]

Рис 1 Редактор VBA (слева дерево проекта, активизирован редактор модуля 1,
который виден в правой части окна VBA)

Примечание: В Access модули можно обрабатывать, не заходя в редактор VBA,
выбрав закладку Модули. В Access 1997 модули обрабатываются только через
закладку Модули, т.к. окна проекта в этой версии Access не существует.

Переименование, Удаление, Создание, Добавление, Экспорт, Импорт модулей
проекта

Все указанные в заголовке действия можно выполнить следующим образом:
1. В редакторе VBA нажать правую клавишу мыши на дереве проекта на имени
нужного нам модуля (или на любом имени имеющегося модуля, для того,
что бы создать новый модуль)
2. Выбрать соответствующий пункт меню (для создания модуля выбрать
пункты: Вставить-модуль)

Импорт и экспорт модуля из проекта в проект


Импорт модуля через экспортируемый файл (а также модулей обычного VB)

Для пересылки модуля из проекта в проект можно воспользоваться следующим
приемом:
1. Экспортировать модуль из проекта в файл (в редакторе VBA нажать правую
клавишу мыши на дереве проекта, на имени модуля, и выбрать пункт
“Экспорт файла”)
2. Импортировать модуль из файла в проект (данный файл может являться не
только экспортируемым файлом из VBA приложения, но и быть модулем
обычного VB)
В редакторе VBA нажать правую клавишу мыши на дереве проекта, на имени
файла, и выбрать пункт “Экспорт файла”

.

Редакция модуля

1. В редакторе VBA кликнуть в окне проекта два раза по имени нужного нам
модуля (см. рис 1)( В Access выбрать закладку Модули и имя
соответствующего модуля, войти в меню Вид-Программа.).
2. Перейти в активизированное окно редактора модуля (справа от окна
проекта) и редактировать его.
3. Из верхнего левого списка, расположенного вверху окна редактора
модуля, можно выбирать либо раздел описания, либо имя нужной вам
подпрограммы (В модуле Форм, Листов Excel, Книги Excel, Документа Word
и т.п. из верхнего правого списка можно выбрать Общую Область, либо
имя объекта (Листа, Книги, Документа и т.п.), либо имя элемента
управления (который находится на соответствующем Листе, Книге,
Документе и т.п.), при выбранном объекте, из правого списка выбирается
имя события, для того, что бы активизировать соответствующую
событийную процедуру объекта или элемента управления).

Обработка модулей VBA программно

Под “ИмяПроекта” в программной конструкции подразумевается соответствующий
объект. Для связи с книгой Excel предназначен объект - Workbooks("Имя
книги"), а для связи с документом Word объект - Documents(“Имя документа”).
Объект для связи с документом, который содержит общие макросы приложения
Word, имеет имя: NormalTemplate, в Excel приложении данный объект
записывается следующим образом: Workbooks("PERSONAL").

Экспорт модуля проекта в файл

ИмяПроекта.VBProject.VBComponents.Item("Имя модуля").Export "Путь и
ИмяФайла"

Импорт модуля проекта из файла

ИмяПроекта.VBProject.VBComponents.Import "Путь и ИмяФайла"

Импорт модуля через организатор(данный код только для Word приложения)

Application.OrganizerCopy Source:= _

“Путь и имя проекта, откуда берется модуль”, Destination:= _

“Путь и имя проекта куда импортируется модуль”, Name:="Имя модуля", Object
_

:=wdOrganizerObjectProjectItems

Вставка новых строк в модуль проекта

ИмяПроекта.VBProject.VBComponents.Item("Имя модуля").CodeModule.InsertLines
№, S
Где

№ - Номер строки в модуле, с которой будут вставляться новые строки

S – Вставляемая строка символов

Примечание:

В переменной S могут содержаться коды символов конца строк , которые можно
получить следующей функцией со следующим аргументом: CHR(13). Таким
образом, переменная S может содержать в себе сразу несколько строк:
S = “Первая строка”+ chr(13)+”Вторая строка” + chr(13)+”Третья строка”
‘и т.д.

Удаление строк из модуля

ИмяПроекта..VBProject.VBComponents.Item("Имя
модуля").CodeModule.DeleteLines(№,Количество)
Где

№ - Номер строки в модуле с которой будут удаляться строки

Количество – количество удаляемых строк

Чтение строк из модуля

ИмяПроекта.VBProject.VBComponents.Item("Имя
модуля").CodeModule.Lines(№,Количество)
Где

№ - Номер строки, в модуле с которой будут начинаться чтение строк

Количество – количество читаемых строк

Определение количества строк в модуле

ИмяПроекта.VBProject.VBComponents.Item("Имя
модуля").CodeModule.CountOfLines

Переименование модулей проекта

ИмяПроекта.VBProject.VBComponents.Item(“ИмяМодуля”).Name =”Новое имя
модуля”

Удаление модулей проекта

ИмяПроекта.VBProject.VBComponents.Remove _

ИмяПроекта.VBProject.VBComponents.Item("ИмяМодуля")

Определение количества модулей в проекте

ИмяПроекта.VBProject.VBComponents.Count



Создание нового модуля проекта

‘Создаем новый модуль макросов и подпрограмм

ИмяПроекта.VBProject.VBComponents.Add vbext_ct_StdModule

‘Определяем индекс созданного модуля

k = ИмяПроекта.VBProject.VBComponents.Count

‘даем свое имя модулю

ИмяПроекта.VBProject.VBComponents.Item(k).Name = "Новое имя модуля"



Постановка задачи и ее решение

Вид объекта – Числовая прямоугольная матрица.
Параметры объекта – Размерности матрицы
Входные формы – Ввод элементов матрицы со столбцом (Клавиатура, Файл, Тест-
формула), Выбор вида обработки.
Виды обработки – Построение диаграмм
1. Средние значения по строкам и столбцам
2. Максимальные значения по строкам и столбцам
3. Минимальные значения по строкам и столбцам

Option Explicit
Const m = 15
Dim i, j, k As Integer
Public Obr As Byte
Dim n, A(m, m), L(m) As Double
Public inp, NameF, Path As String
Dim Bukva As Variant
Dim det, s, x As Double
Public объявляет глобальную переменную. Объявлённая таким способом
переменная становится доступной из всех модулей и форм проекта. Если
переменная объявлена в разделе глобальных объявлений, то доступ к ней
осуществляется просто по её имени. Если же она объявлена в коде формы, то
доступ к ней из других форм и модулей осуществляется так: ИмяФормы.
ИмяПеременной.

Sub ButtonCancel_Click()
Sheet1.OptionButton1.Select
Cng_List (False)
End Sub
Sub объявляет процедуру с именем name и параметрами arglist.

Public Sub Obrabotka()
Obr = Sheet1.ListBox1.ListIndex + 1
n = Sheet2.Range("R2")
If Obr > 0 Then
Select Case Obr
Case 1 ' Среднее значение по строкам
Call rab1(n)
Case 2 ' среднее значение по столбцам
Call rab2(n)
Case 3 ' min по строкам
Call rab3(n)
Case 4 ' min по столбцам
Call rab4(n)
Case 5 ' max по строкам
Call rab5(n)
Case 6 ' max по столбцам
Call rab6(n)
End Select
End If
End Sub

Здесь мы, соответственно, объявляем глобальную процедуру вида обработки. В
данном случае это подсчет средних, максимальных, и минимальных элементов
матрицы по столбцам и строкам
Call - Вызывает процедуру или функцию. Оператор Call может быть опущен.
Далее…

Sub ButtonOK_Click()
If Sheet1.OptionButton1.Value = True Then
'Ввод матрицы с клавиатуры в файл
Met1:
inp = InputBox "Введите размерность матрицы А", "Ввод размерности",
"testfile" - выводит окно с запросом на ввод значения. Параметры такие же,
как и у функции MsgBox.

n = Val(inp)- Превращает строку в число
If (n > 0) And (n A(i, j) Then

Новинки рефератов ::

Реферат: Интернет и средства массовой коммуникации (Компьютеры)


Реферат: Формирование интереса к урокам математики (Педагогика)


Реферат: По организации и проведению учебной (Геодезия)


Реферат: Макс Вебер. Политика как призвание и профессия (Политология)


Реферат: Бокс (Спорт)


Реферат: Психологическая готовность ребенка к школе (Педагогика)


Реферат: Формирование многопартийности в Республике Беларусь (Политология)


Реферат: Билеты и ответы по обществознанию (2004-2005 уч. год) (Политология)


Реферат: Культура общения (Психология)


Реферат: Экспериментальный метод в психологии (Психология)


Реферат: Василий 3 (Исторические личности)


Реферат: Средства и техника педагогического общения (Педагогика)


Реферат: Культура как социальная система (Социология)


Реферат: Видеоусилитель (Радиоэлектроника)


Реферат: Борьба Руси с татарским нашествием (История)


Реферат: Великие советские военачальники: Михаил Николаевич Тухачевский (История)


Реферат: Абай Кунанбаев (1845-1904) (Литература)


Реферат: Стратегии крупных Германских предприятий в области мобильной коммерции (Банковское дело)


Реферат: Оперы Чайковского и развитие музыкального театра (Музыка)


Реферат: Маргарет Тэтчер (Исторические личности)



Copyright © GeoRUS, Геологические сайты альтруист