OLEVariant

From SunFlurry wiki
Jump to: navigation, search
  OLEVariant (Конвертация объекта системы в объект данных OLE с указанным типом)
Объект:Функции общего назначения
Статус разработки: Реализована
Тип:Функция
Обращение к БД:Нет
Исключения:Невозможно превратить в строку
Визуальность:Нет

Функция создает из объекта системы вспомогательный объект OLEVARIANT с заданным типом данных OLE. Функция может быть вызвана для любого объекта, однако, только следующие объекты имеет смысл превращать в объекты OLE: числа, строки, даты, другие OLE-объекты, списки. Не имеет смысла использование функции, когда операции с OLE объектом работают нормально, функция может использоваться для "капризных" и прихотливых объектов, которые отказываются принимать аргументы, если их тип отличается от необходимого им типа. Для указания на тип данных значения, используются константы, данные ниже. Нужно также понимать, что константы, типа _OLE_VT_ARRAY являются масочными и могут быть добавлены к любому типу данных (OleVariant(СпЧисла,_OLE_VT_ARRAY or _OLE_VT_UI1)).

Имя константы Числовое значение Описание
_OLE_VT_EMPTY 0 Константа пустого значения OLE
_OLE_VT_NULL 1 Константа SQL значения NULL
_OLE_VT_I2 2 Константа 16-битного числа со знаком (Int16)
_OLE_VT_I4 3 Константа 32-битного числа со знаком (Int32)
_OLE_VT_R4 4 Константа 32-битного вещественного числа (Single)
_OLE_VT_R8 5 Константа 64-битного вещественного числа (Double)
_OLE_VT_CY 6 Константа 64-битного вещественного числа валюты с четырьмя знаками после точки (Currency)
_OLE_VT_DATE 7 Константа даты и времени
_OLE_VT_BSTR 8 Константа строки UTF-16
_OLE_VT_DISPATCH 9 Константа OLE-объекта
_OLE_VT_ERROR 10 Константа 32-битного числа со знаком, представляющего ошибку при вызове функции Windows (Int32)
_OLE_VT_BOOL 11 Константа булевого значения (-1 (или 1) -- правда, 0 -- ложь)
_OLE_VT_VARIANT 12 Константа произвольного значения (любого из типов OLE), эта константа говорит системе о том, что она должна сама подобрать нужное значение из типа объекта.
_OLE_VT_UNKNOWN 13 Константа интерфейса типа IUnknown, в который должен быть превращен передаваемый OLE-объект
_OLE_VT_DECIMAL 14 Константа указания на 128-битное вещественное число со знаком (Decimal)
_OLE_VT_I1 16 Константа 8-битного числа со знаком (Int8)
_OLE_VT_UI1 17 Константа 8-битного числа без знака (Byte)
_OLE_VT_UI2 18 Константа 16-битного числа без знака (Word)
_OLE_VT_UI4 19 Константа 32-битного числа без знака (DWord)
_OLE_VT_I8 20 Константа 64-битного числа со знаком (Int64)
_OLE_VT_UI8 21 Константа 64-битного числа без знака (QWord)
_OLE_VT_INT 22 Константа 32-битного числа со знаком знака (Int32)
_OLE_VT_UINT 23 Константа 32-битного числа без знака (DWord)
_OLE_VT_VOID 24 Константа пустого значения в стиле языка C
_OLE_VT_HRESULT 25 Константа 32-битного числа со знаком, представляющего результат вызова системной функции OLE (к примеру, .Release()) (Int32)
_OLE_VT_PTR 26 Константа указателя в памяти (DWord или QWord)
_OLE_VT_SAFEARRAY 27 Константа указателя на массив SAFEARRAY (правильнее использовать _OLE_VT_ARRAY)
_OLE_VT_CARRAY 28 Константа указателя на массив CARRAY (правильнее использовать _OLE_VT_ARRAY)
_OLE_VT_USERDEFINED 29 Константа произвольного пользовательского типа
_OLE_VT_LPSTR 30 Константа указания на ANSI строку, заканчивающуюся нулевым байтом
_OLE_VT_LPWSTR 31 Константа указания на UTF-16 строку, заканчивающуюся нулевым словом
_OLE_VT_RECORD 36 Константа указания на запись с пользовательскими полями в памяти
_OLE_VT_INT_PTR 37 Константа числа с размером в зависимости от размерности исполняемого процесса (32 или 64 бит) со знаком (Int32 или Int64)
_OLE_VT_UINT_PTR 38 Константа числа с размером в зависимости от размерности исполняемого процесса (32 или 64 бит) без знака (DWord или QWord)
_OLE_VT_FILETIME 64 Константа 64-битного числа содержащего дату и время с точностью до 100 наносекунд
_OLE_VT_BLOB 65 Константа указания на бинарный массив, начинающийся с информации по его размеру
_OLE_VT_STREAM 66 Константа указания на бинарный поток
_OLE_VT_STORAGE 67 Константа указания на бинарный накопитель
_OLE_VT_STREAMED_OBJECT 68 Константа указания на бинарный поток, содержащий объект
_OLE_VT_STORED_OBJECT 69 Константа указания на бинарный накопитель, содержащий объект
_OLE_VT_BLOB_OBJECT 70 Константа указания на бинарный массив, содержащий объект
_OLE_VT_CF 71 Константа указания на объект в формате буфера обмена
_OLE_VT_CLSID 72 Константа указания на GUID
_OLE_VT_VECTOR 0x1000 Масочная константа, которая может использоваться с другими типами, превращает аргумент в простой массив
_OLE_VT_ARRAY 0x2000 Масочная константа, которая может использоваться с другими типами, превращает аргумент в стандартный массив
_OLE_VT_BYREF 0x4000 Масочная константа, которая может использоваться с другими типами, говорит о том, что аргумент представляет собой ссылку на аргумент, заданного типа

Синтаксис

OLEVariant(<Объект>,<Тип данных OLE (INT)>):<Объект, используемый при вызовах OLE функций (OLEVARIANT)>

Аргументы

  • <Объект> - Объект произвольного типа, который необходимо конвертировать в объект с заданным типом данных OLE.
  • <Тип данных OLE (INT)> - Число, тип данных OLE. Доступен список констант для удобного указания на тип данных.

Возвращаемое значение

Возвращает новый объект, типа OLEVARIANT, который можно использовать в аргументах функций или при присваивании свойствам OLE объектов.

Примеры

//OLE функция Foo требует в первом аргументе булевский тип, а во втором аргументе массив 8-битных чисел без знака (байты)
aList:=List.Create(1,2,3,4,5,6,7,8,9,10);

//В первом аргументе передадим константу FALSE (0)
//Во втором аргументе передадим список (_OLE_VT_ARRAY) байтов (_OLE_VT_UI1)
aOle.Foo(OLEVariant(0,_OLE_VT_BOOL),OLEVariant(aList,_OLE_VT_ARRAY+_OLE_VT_UI1));