C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 19 - Функции API, работающие с вариантами / COM-справка / Приложение

Шаг 19 - Функции API, работающие с вариантами

Эти функции позволяют приложениям работать с переменными VARIANTARG. Приложениям, реализующим IDispatch, следует проверять каждый параметр VARIANTARG на все допустимые типы, пытаясь привести вариант к каждому из типов с помощью VariantChangeType или VariantChangeTypeEx. Если в качестве параметров допустимы объекты, то приложению следует всегда выполнять проверку на объектные типы перед проверкой на все остальные типы. Если ожидается объектный тип, то приложение должно использовать IUnknown::QueryInterface, чтобы проверить, относится ли объект к надлежащему типу.

Хотя приложения могут работать с VARIANTARG и без функций API, использование этих функций гарантирует, что все реализации IDispatch будут применять одинаковые правила преобразования и приведения типов. Например, эти функции при необходимости автоматически преобразуют числовые аргументы в строковые и наоборот.

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

  1. Прежде чем их использовать, все VARIANTARG нужно инициализировать с по мощью Variantlnit.
  2. Для типов VT_UI1, VT_I2, VT_I4, VT_R4, VT_R8, VT_BOOL, VT_ERROR, VT_CY и VT_DATE данные хранятся внутри структуры VARIANT. Указатели на эти данные становятся недействительными после изменения типа варианта.
  3. Для типов VT_BYREF | любой_тип память, на которую ссылается вариант, при надлежит вызывающему функцию и им и освобождается.
  4. В случае VT_BSTR существует только один владелец строки. Все строки в вариантах должны создаваться с помощью функции SysAllocString. При освобождении или изменении типа варианта, содержащего VT_BSTR, для строки вызывается SysFreeString.
  5. Правила для типов VT_ARRAY | любой_тип аналогичны правилам для VT_BSTR. Все массивы в вариантах должны создаваться с помощью SafeArrayCreate. При освобождении или изменении типа варианта, в котором установлен флаг VT_ARRAY, вызывается SafeArrayDestroy.
  6. В случае типов VT_DISPATCH и VT_UNKNOWN объекты имеют счетчики ссылок, которые увеличиваются при помещении объектов в вариант. При освобождении варианта или изменении его типа для объекта, на который он ссылается, вызывается Release.

| |
Автор Каев Артем.
[AD]