VBscript «Ожидаемое заявление» Ошибка - PullRequest
3 голосов
/ 22 октября 2009

Я работаю над программой VBScript, и у меня появляется ошибка «Ожидаемое заявление». Я не могу найти ошибку. Я видел несколько примеров этой ошибки, но они мне не помогли.

Я новичок в VBScript.

Вот код.

<code>Sub SetText(tx, lw)
    Dim t, l, r, a

    t = -1
    l = Len(tx)
    r = ""
    a = 0

    While t < l
        t = t + 1
        a = Asc(Mid(tx,t,1))

        If a >= 160 or a=60 or a=62 or a=38 or a=34 or a=39 or a=32 Then
            If a = 32 Then
                r = r + "&nbsp;"
            Else
                r = r + "&#" + Cstr(a) + ";"
            End If
        Else
            r = r + Mid(tx,t,1)
        End If

    End While 'The error occurs at the beginning of this statement.'

    If Not lw Then
        r = "<pre>" + r + "
» End If r = "
" + r + "
" objExplorer.document.body.innerHTML = r End Sub

Ответы [ 3 ]

7 голосов
/ 22 октября 2009

While ... End While? Я не думаю, что это правильно.

Я думаю, что синтаксис:

While counter > 0
    ...
Wend

Попробуйте вместо этого, у него есть некоторые другие улучшения (я почти уверен, Mid использует базу 1, а не базу 0 - если не изменить For t = 1 to Len (tx) на For t = 0 to Len (tx) - 1):

<code>Sub SetText (tx, lw)
    Dim t, r, c, a

    'Standard prefix and optional pre tag.'
    r = "<div style='width:auto; height:auto;'>"
    If Not lw Then
        r = r + "<pre>"
    End If

    'Process each character in string.'
    For t = 1 to Len (tx)
        'Get character and code.'
        c = Mid (tx,t,1)
        a = Asc (c)

        'Change "character" if it is one of the special ones.'
        If a = 32 Then
            c = "&nbsp;"
        Else
            If a >= 160 or a = 60 or a = 62 or a = 38 or a = 34 or a = 39 Then
                c = "&#" + Cstr (a) + ";"
            End If
        End If

        'Add "character" to result (it may be a string at this point).'
        r = r + c
    Next

    'Optional pre tag and standard suffix.'
    If Not lw Then
        r = r + "
» End If r = r + "" «Внедрить в страницу.» objExplorer.document.body.innerHTML = r End Sub

Я не проверил это полностью (ну, вообще-то, действительно), поэтому дайте мне знать, если есть проблема (или просто вернитесь к исходному решению, заменив End While на Wend и, возможно, изменив диапазон t для базы-1 Mid).

0 голосов
/ 07 ноября 2018

Если все синтаксически правильно, если вы копируете и вставляете код из местоположения, несовместимого с QTP, QTP может не распознать код и выдать «Ожидаемый идентификатор / оператор».

Простое повторение кода в точности так, как оно было, решит эту проблему.

0 голосов
/ 22 октября 2009

Смотри также: http://www.w3schools.com/vbscript/vbscript_looping.asp

ответ Паксиабло правильный - вы не используете End While в VBScript. Ваш код должен выглядеть так:

<code>Sub SetText(tx, lw)
    Dim t, l, r, a

    t = -1
    l = Len(tx)
    r = ""
    a = 0

    While t < l
        t = t + 1
        a = Asc(Mid(tx,t,1))

        If a >= 160 or a=60 or a=62 or a=38 or a=34 or a=39 or a=32 Then
            If a = 32 Then
                r = r + "&nbsp;"
            Else
                r = r + "&#" + Cstr(a) + ";"
            End If
        Else
            r = r + Mid(tx,t,1)
        End If

    Wend '<---'

    If Not lw Then
        r = "<pre>" + r + "
» End If r = "
" + r + "
" objExplorer.document.body.innerHTML = r End Sub

Последнее, что я проверил, это устаревшая структура управления и, как правило, не рекомендуется. Ваш код должен, вероятно, действительно выглядеть так:

<code>Sub SetText(tx, lw)
    Dim t, l, r, a

    t = -1
    l = Len(tx)
    r = ""
    a = 0

    Do While t < l
        t = t + 1
        a = Asc(Mid(tx,t,1))

        If a >= 160 or a=60 or a=62 or a=38 or a=34 or a=39 or a=32 Then
            If a = 32 Then
                r = r + "&nbsp;"
            Else
                r = r + "&#" + Cstr(a) + ";"
            End If
        Else
            r = r + Mid(tx,t,1)
        End If

    Loop

    If Not lw Then
        r = "<pre>" + r + "
» End If r = "
" + r + "
" objExplorer.document.body.innerHTML = r End Sub

На самом деле, возможно, есть и другие изменения, но я не знаком с контекстом этого кода, который я советую.

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