2016-01-06 4 views
0

У меня есть DLL (недоступная в данный момент), где функция возвращает Variant()Что такое правильный способ обработки типа Variant в VB6?

Этот вариант теоретически должен возвращать массив ошибок (если это произошло).

Dim iresult

iresult = object.functioncall()

Я пытаюсь поймать этот набор результатов, будь то пустой или нет. Что я получаю сейчас это:??

имяТипа (iresult)
Variant()
UBound (iresult)
LBound (iresult)
IsEmpty (iresult) Ложные
? IsNull (iresult)
Ложные
? IsArray (iresult)
Правда

Любая попытка проникнуть внутрь iresult (1) или iresult (0) или через петлю дает мне индекс ошибки вне диапазона. Я могу решить, что массив пуст, но если он содержит что-то, что мне нужно получить.

Любые предложения приветствуются. Спасибо.

+0

только для того, чтобы быть понятным, вызывающая программа также VB6? – Jeremy

+0

Да, также VB6, исполняемый файл. – KonB

+0

Можете ли вы попробовать Dim iresult() как вариант? Может быть, он запутался. – Jeremy

ответ

0

После доступа к коду я понял, что частью проблемы было то, что возвращаемый массив был 2 мерным. Но я все равно обманул, потому что массив может быть пустым, а Variant не признает его пустым или нулевым.

Повторяя через возвращаемый вариант (который всегда возвращается в виде массива или сортировки), я улавлю ошибку «вне диапазона» и перехожу один с моим кодом. Если он повторит, тогда мне будет хорошо.

Благодарим за помощь.

+1

Пустые, нулевые и т. Д. Являются специальными значениями, поэтому, если вы их не используете, то, конечно, проверки этих значений не будут работать , Вместо этого вы, кажется, возвращаете неограниченный массив, который более жесткий для непосредственного обнаружения. Существует несколько возможных «излечений», но объяснение их в однострочном ответе непросто. Обработка исключений работает, но здесь нет ничего мистического. У вас нет функции Variant, у вас есть функция Variant Array. По словам Мастера Йоды: «Вот почему вы терпите неудачу». – Bob77

+0

Делает смысл. Это уже больше, чем я хочу узнать о массивах VB6. – KonB

Смежные вопросы