我正在开发一个vbscript程序,我得到了“预期语句”错误。我找不到错误。我已经看到了这个错误的一些样本,但他们没有帮助我。
我是vbscript的新手。
这是代码。
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 + " "
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 + "</pre>"
End If
r = "<div style='width:auto; height:auto;'>" + r + "</div>"
objExplorer.document.body.innerHTML = r
End Sub
答案 0 :(得分:7)
While ... End While
?我不认为这是对的。
我认为语法是:
While counter > 0
...
Wend
尝试使用此功能,它还有一些其他改进(我非常肯定Mid
使用基数1,而不是基数0 - 如果不将For t = 1 to Len (tx)
更改为For t = 0 to Len (tx) - 1
):
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 = " "
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 + "</pre>"
End If
r = r + "</div>"
'Inject into page.'
objExplorer.document.body.innerHTML = r
End Sub
我没有对此进行彻底测试(好吧,实际上是这样),所以请告诉我是否存在问题(或者只是恢复原始解决方案,将End While
替换为Wend
,并且可能更改base {1 t
的{{1}}范围。
答案 1 :(得分:0)
另请参阅:http://www.w3schools.com/vbscript/vbscript_looping.asp
paxdiablo's answer是对的 - 您不在VBScript中使用End While
。您的代码应如下所示:
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 + " "
Else
r = r + "&#" + Cstr(a) + ";"
End If
Else
r = r + Mid(tx,t,1)
End If
Wend '<---'
If Not lw Then
r = "<pre>" + r + "</pre>"
End If
r = "<div style='width:auto; height:auto;'>" + r + "</div>"
objExplorer.document.body.innerHTML = r
End Sub
最后我查了一下,它是一个传统的控制结构,通常不鼓励。你的代码应该真的看起来像这样:
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 + " "
Else
r = r + "&#" + Cstr(a) + ";"
End If
Else
r = r + Mid(tx,t,1)
End If
Loop
If Not lw Then
r = "<pre>" + r + "</pre>"
End If
r = "<div style='width:auto; height:auto;'>" + r + "</div>"
objExplorer.document.body.innerHTML = r
End Sub
实际上,可能会有更多更改,但不熟悉此代码的上下文,据我所知。
答案 2 :(得分:0)
如果所有语法在语法上都是正确的,则如果从与QTP不兼容的位置复制并粘贴代码,则QTP可能无法识别该代码并抛出“期望的标识符/声明”。
只需完全按原样重新键入代码即可解决此问题。
答案 3 :(得分:0)
我有同样的问题。
我在第1行本身说“ Expected Statement”错误。我已将代码从以前的UFT业务组件临时复制到.txt格式的Notepad ++文件中。从这里,我已经复制并粘贴到新的业务组件文件。
@William Humphries的解决方案为我工作。但无需再次输入所有内容。解决方法很简单。
我将代码保存到记事本++中的.vbs文件中。丢弃出现错误的业务组件文件。创建了一个新的新业务组件/操作文件。从.vbs notepad ++文件复制并粘贴到新的业务组件中。有效。