如果_StringBetween没有找到该值

时间:2014-05-06 22:19:40

标签: autoit winhttprequest

我在AutoIT中创建了一个简单的脚本来检查字符串是否存在,如果存在则会显示标签,否则它将显示另一个标签:脚本:

$text = $oHTTP.ResponseText
$status = $oHTTP.Status
If $status = 200 Then
    $array = _StringBetween($text, '<span class="d1">', "</span>")
    If $array[0] == "" Then
        GUICtrlSetState($v2l1, $GUI_SHOW)
    ELSE
        GUICtrlSetState($v2l2, $GUI_SHOW)
    EndIf
Else
    ConsoleWrite(@error)
EndIf

如果找到任何东西,那么标签就会出现,但是如果找不到字符串就会给我一个错误并退出:

Subscript used on non-accessible variable.: If $array[0] == "" Then If $array^ ERROR

无论如何,我能解决这个问题吗?我的意思是如果$ array没有找到它使$ v2l2可见的字符串。

先谢谢。

2 个答案:

答案 0 :(得分:4)

您应该使用IsArray来测试您是否收到了有效的数组。每当调用返回数组的函数时,建议执行此过程。

If $status = 200 Then
    $array = _StringBetween($text, '<span class="d1">', "</span>")
    If IsArray($array) Then
        ; process the array
    Else
        ; handle the error
    EndIf
EndIf

答案 1 :(得分:1)

使用_StringBetween()设置的@error,这是正确的AutoIt编码。

If $status = 200 Then
     $array = _StringBetween($text, '<span class="d1">', "</span>")
     If Not @error Then
         ; process the array
     Else
         ; Handle the error
     EndIf
EndIf