visual una ubound studio net matriz matrices llenar dinamico como arreglos array vbscript automated-tests qtp

vbscript - una - vba array dinamico



QTP: Comprobando si una matriz de cadenas contiene un valor (4)

Tengo problemas para que mi caso de prueba se ejecute correctamente.

El problema está en el siguiente código, la primera declaración if es exacta. QTP se queja de que se requiere un objeto

For j=Lbound(options) to Ubound(options) If options(j).Contains(choice) Then MsgBox("Found " & FindThisString & " at index " & _ options.IndexOf(choice)) Else MsgBox "String not found!" End If Next

Cuando reviso la matriz puedo ver que está poblada correctamente y ''j'' también es la cadena correcta. Cualquier ayuda con este problema sería muy apreciada.


Las cadenas en VBScript no son objetos, ya que no tienen funciones miembro. La búsqueda de una subcadena se debe hacer mediante el uso de la función InStr .

For j=Lbound(options) to Ubound(options) If InStr(options(j), choice) <> 0 Then MsgBox("Found " & choice & " at index " & j Else MsgBox "String not found!" End If Next


Hola si compruebas String no String en la matriz, utiliza StrComb porque si usas InStr, entonces si array = "apple1", "apple2", "apple3", "apple" y choice = "apple", todos devolverán el pase para cada elemento de la matriz.

Function CompareStrings ( arrayItems , choice ) For i=Lbound(arrayItems) to Ubound(arrayItems) '' 1 - for binary comparison "Case sensitive '' 0 - not case sensitive If StrComp(arrayItems(i), choice , 1) = 0 Then CompareStrings = True MsgBox("Found " & choice & " at index " & i Else CompareStrings = False MsgBox "String not found!" End If Next End Function


Function CompareStrings ( arrayItems , choice ) For i=Lbound(arrayItems) to Ubound(arrayItems) '' 0 - for binary comparison "Case sensitive '' 1 - for text compare not case sensitive If StrComp(arrayItems(i), choice , 0) = 0 Then MsgBox("Found " & choice & " at index " & i Else MsgBox "String not found!" End If Next End Function


Una forma concisa de comprobar si una matriz de cadenas contiene un valor sería combinar las funciones de filtro y UBound :

If Ubound(Filter(options, choice)) > -1 Then MsgBox "Found" Else MsgBox "Not found!" End If

Contras: no se obtienen los índices donde se encuentran los elementos

Pros: es simple y tiene los parámetros de inclusión y comparación habituales para especificar los criterios de coincidencia.