Lotusscript - Несоответствие типов при использовании ArrayGetIndex - PullRequest
0 голосов
/ 14 февраля 2020

У меня есть функция, где я проверяю, найдена ли строка в варианте:

Function checkIfValueIsInVariant (tempVariant As Variant, tempValue As String) As Boolean
    Dim valueFound As Boolean

    'zet standaard waarde op niet gevonden
    valueFound = False
    Print "Value : " + tempValue
    If Not IsNull( ArrayGetIndex(tempVariant, tempValue) ) Then
            'waarde is gevonden in variant dus zet op true
            valueFound = true
    End If
        checkIfValueIsInVariant = valueFound
End Function

Когда я go через код с отладчиком, то я вижу эти значения:

tempVariant = "value" type = Variant
tempValue = "value" type = String

Но когда он выполняет эту строку:

`If Not IsNull( ArrayGetIndex(tempVariant, tempValue) )` Then

Я получаю несоответствие типов, Что я делаю неправильно?

1 Ответ

2 голосов
/ 14 февраля 2020

Variant - очень плохой тип данных в LotusScript: он может содержать что угодно. ArrayGetIndex ожидает, что первый параметр будет An array or Variant containing an array.. В вашем примере tempvariant - это вариант строки типа, а НЕ массив -> несоответствие типов.

Если я не знаю, получаю ли я скаляр или массив раньше, обычно я пишу что-то подобное в моем коде:

Dim varArray as Variant
Dim arrOneElement(0) as Variant


If not IsArray( tempVariant ) then
    arrOneElement(0) = tempVariant
    varArray = arrOneElement
Else
    varArray = tempVariant 
End If
If Not IsNull( ArrayGetIndex(varArray, tempValue) ) Then

Таким образом, я могу вставить туда (почти) все, что я хочу, и он вернет правильный результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...