powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как победить "Invalid variant operation" при обнулении переменной, полученной из COM-объек
2 сообщений из 27, страница 2 из 2
Как победить "Invalid variant operation" при обнулении переменной, полученной из COM-объек
    #39651981
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GunSmoker,

Код: pascal
1.
2.
    VariantClear(vArr);
    VariantInit(vArr);


Вот она, рыба моей мечты! Вот она! Вот она-а-а!!!

Спасибо огромное.

Это чистое решение без подводных камней?

По крайней мере, (смотри ниже) выделенная часть как раз про мой случай

function VariantClearThis function should be used to clear variables of type VARIANTARG (or VARIANT) before the memory containing the VARIANTARG is freed (as when a local variable goes out of scope).
The function clears a VARIANTARG by setting the vt field to VT_EMPTY and the wReserved field to 0. The current contents of the VARIANTARG are released first. If the vt field is VT_BSTR, the string is freed; if the vt field is VT_DISPATCH, the object is released. If the vt field has the VT_ARRAY bit set, the array is freed.

In certain cases, you may prefer to clear a variant in your own code, without calling VariantClear. For example, it is permissible to change the type of a VT_I4 variant to some other type without calling this function. However, you must call VariantClear if you receive a VT_type that you are not prepared to handle. Using VariantClear in these cases ensures that your code will continue to work if OLE Automation adds new variant types in the future.
...
Рейтинг: 0 / 0
Как победить "Invalid variant operation" при обнулении переменной, полученной из COM-объек
    #39652039
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
However, you must call VariantClear if you receive a VT_type that you are not prepared to handle. Using VariantClear in these cases ensures that your code will continue to work if OLE Automation adds new variant types in the future.
Ух-ты, не знал. Какой полезный топик оказался. :)
С другой стороны, для массивов вроде была другая
функция, VarArrayClear или что-то вроде того.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
2 сообщений из 27, страница 2 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как победить "Invalid variant operation" при обнулении переменной, полученной из COM-объек
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]