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 руб./мес


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




 20 - VariantChangeType / COM-справка / Приложение

Шаг 20 - VariantChangeType

Преобразует вариант из одного типа в другой.

HRESULT VariantChangeType
( 
	VARIANTARG FAR* pvargDest, 
	VARIANTARG FAR* pvarSrc, 
	unsigned short wFlags, 
	VARTYPE vt
);

Параметры:
pvargDest
Указатель на VARIANTARG, принимающий результаты приведения типа. Если это тот же указатель, что и pvarSrc, то вариант преобразуется по месту.
pvarSrc
Указатель на исходный VARIANTARG, который нужно привести к новому типу.
wFlags
Флаги, управляющие преобразованием. В настоящий момент определен единственный флаг — VARIANT_NOVALUEPROP, который запрещает функции пытаться преобразовывать объект к базовому типу данных, обращаясь к свойству Value. Приложениям следует устанавливать этот флаг только при необходимости, так как после этого их поведение будет отличаться от поведения других приложений.
vt
Целевой тип преобразования. Если функция возвращает код S_OK, то поле vt в *pvargDest всегда равно данному значению.

Коды возврата:
Из возвращенного HRESULT получают один из следующих кодов возврата:

Код возвратаЗначение
S_OKУспех.
DISP_E_BADVARTYPEvt - недопустимый тип варианта.
DISP_E_OVERFLOWЗначение, на которое указывает pvarSrc, не умещается в диапазон целевого типа.
DISP_E_TYPEMISMATCHАргумент нельзя привести к заданному типу.
E_INVALIDARGОдин из аргументов неверен.
E_OUTOFMEMORYHe хватает памяти для преобразования.

Комментарии:
Функция VariantChangeType() выполняет преобразование между базовыми типами (включая преобразования из числа в строку и из строки в число). Вариант, в котором установлен флаг VT_BYREF, преобразуется к значению путем получения значения, на которое он ссылается. Объект приводится к значению путем обращения к свойству Value (DISPID_VALUE).
Обычно реализация IDispatch::Invoke определяет, к какому члену выполняется обращение, и затем вызывает VariantChangeType, чтобы получить значение одного или нескольких аргументов. Например, если вызов IDispatch задает член SetTitle, который принимает один строковый аргумент, то реализация вызывает VariantChangeType, пытаясь преобразовать параметр в строку. Если VariantChangeType не возвращает ошибку, то значение аргумента можно считать непосредственно из поля bstrVal структуры VARIANTARG. Если VariantChangeType возвращает DISP_E_TYPEMISMATCH, то реализация должна установить *puArgErr в 0 (указывая аргумент, вызвавший ошибку) и возвратить из IDispatch::Invoke DISP_E_TYPEMISMATCH.
Данная функция не преобразует массив одного типа в массив другого типа.
Примечание. Тип VARIANTARG не следует преобразовывать «по месту» в массиве rgvarg.


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