powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / как Variant проверить на Is Nothing ?
16 сообщений из 16, страница 1 из 1
как Variant проверить на Is Nothing ?
    #37425285
iskatelsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ищу в экселе:

Код: plaintext
Variant found = worksheet.OlePropertyGet("range","a1:z100").OleFunction("find","текст");

соответственно если чтото нашлось, то все ок, а если нет - то при обращении к переменной выходит ошибка.
нужно сделать проверку, в VBA проверяется на "Is Nothing", а какой аналог у вариантов?

пробовал IsEmpty(), IsNull() - не прокатывает
...
Рейтинг: 0 / 0
как Variant проверить на Is Nothing ?
    #37425326
iljy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iskatelsql,

что такое Variant?
...
Рейтинг: 0 / 0
как Variant проверить на Is Nothing ?
    #37425333
iskatelsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iljy,

Variant is a C++ implementation of the Object Pascal intrinsic type Variant.

вобщем борландовская премудрость :)
...
Рейтинг: 0 / 0
как Variant проверить на Is Nothing ?
    #37425372
Фотография Квейд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iskatelsqliljy,

Variant is a C++ implementation of the Object Pascal intrinsic type Variant.

вобщем борландовская премудрость :)

Это не "борландовская премудрость", это обертка над виндовым типом VARIANT , который предназначен для хранения данных Automation.
...
Рейтинг: 0 / 0
как Variant проверить на Is Nothing ?
    #37425375
Фотография Квейд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iskatelsqlищу в экселе:

Код: plaintext
Variant found = worksheet.OlePropertyGet("range","a1:z100").OleFunction("find","текст");

соответственно если чтото нашлось, то все ок, а если нет - то при обращении к переменной выходит ошибка.
нужно сделать проверку, в VBA проверяется на "Is Nothing", а какой аналог у вариантов?

пробовал IsEmpty(), IsNull() - не прокатывает

Странно, что IsEmpty() "не прокатывает". Ну сделай ход конем, заключи вызов в блок try/catch, если попали в catch - значит "не найдено".
...
Рейтинг: 0 / 0
как Variant проверить на Is Nothing ?
    #37425388
iljy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iskatelsqliljy,

Variant is a C++ implementation of the Object Pascal intrinsic type Variant.

вобщем борландовская премудрость :)
Насколько я помню, в дельфях идет что-то типа VarType(var) = varEmpty or VarType(var) = varNull, может и в BC так?
...
Рейтинг: 0 / 0
как Variant проверить на Is Nothing ?
    #37425794
majestic-mike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iskatelsql,

Не берусь сказать как это в борланде реализовано, но в VS - проверяется свойство vt у Variant объекта на соответствие VT_ERROR или VT_EMPTY
...
Рейтинг: 0 / 0
как Variant проверить на Is Nothing ?
    #37427715
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
как Variant проверить на Is Nothing ?
    #39344325
didgik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет народ!
Есть решение вопроса кроме try/catch ? Выше приведенный тынц не доступен...
Собственно задача, узнать, существует ли индекс у таблицы в mdb
Код: plaintext
1.
2.
3.
  Variant bd = CreateOleObject("ADOX.Catalog");
  bd.OlePropertySet("ActiveConnection", conn->ConnectionString);
  Variant index = bd.OlePropertyGet("Tables","suppliers").OlePropertyGet("Indexes","ClientRegId");
...
Рейтинг: 0 / 0
как Variant проверить на Is Nothing ?
    #39344342
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
didgik,

https://msdn.microsoft.com/en-us/library/windows/desktop/ms221627(v=vs.85).aspx

и далее смотреть тип VARTYPE

(в топике это было сказано).
...
Рейтинг: 0 / 0
как Variant проверить на Is Nothing ?
    #39344360
didgik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv, спасиб!
Но все равно в таком варианте не выходит, ибо он ошибку дает в момент попытки получения.
...
Рейтинг: 0 / 0
как Variant проверить на Is Nothing ?
    #39345229
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
didgik,

Какую ошибку выдаёт, в момент получения чего, и вообще. Без кода говорить бессмысленно.
...
Рейтинг: 0 / 0
как Variant проверить на Is Nothing ?
    #39345277
alexy_black
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://en.cppreference.com/w/cpp/utility/optional (а также эксперементал)
http://en.cppreference.com/w/cpp/utility/variant (запрошенной функциональности я чего-то не наблюдаю)
...
Рейтинг: 0 / 0
как Variant проверить на Is Nothing ?
    #39345286
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
didgikНо все равно в таком варианте не выходит, ибо он ошибку дает в момент попытки получения.Ваш код?
Без него как вам помочь /горячо, горячо, холодно .../?

VARIANT и SafeArray http://www.rsdn.org/article/com/varsafearr.xml
...
Рейтинг: 0 / 0
как Variant проверить на Is Nothing ?
    #39345288
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iskatelsqlищу в экселе:
Код: plaintext
1.
Variant found = worksheet.OlePropertyGet("range","a1:z100").OleFunction("find","текст");


Судя по всему вам должна быть возвращена переменная типа VT_BSTR.
Далее можете получить размер этой строки и проанализировать его.
...
Рейтинг: 0 / 0
как Variant проверить на Is Nothing ?
    #39345301
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
didgik, это ищешь?
VarIsEmpty
VarIsNull
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / как Variant проверить на Is Nothing ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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