连接在函数中创建的对象的字符串属性会导致空字符串?

时间:2016-01-18 21:09:03

标签: vbscript wsh

我使用提供的代码here作为模板来访问函数外部用户输入定义的多个类变量值(字符串),但最终结果(字符串变量lptmstr)是总是空的;因此,我需要调试帮助。

Class lptm
    public inputstr3
    public grpString1
    public inputstr4
    public grpString2
End Class 

Function lptmIn
    Set lptmIn = New lptm

    lptmIn.inputstr3  = InputBox("enter names")
    lptmIn.grpString1 = Split(inputstr3, ",")

    lptmIn.inputstr4  = InputBox("enter loss %")
    lptmIn.grpString2 = Split(inputstr4, ",")

    If UBound(lptmIn.grpString1) = UBound(lptmIn.grpString2) Then
    Else
        Call lptmIn
    End If
End Function

ublptm = UBound(lptmIn.grpString1)
For i=0 To ublptm
    lptmStr = lptmstr & lptmIn.grpString1(i) + lptmIn.grpString2(i)
Next

1 个答案:

答案 0 :(得分:2)

在您的函数lptmIn中,您在(未定义的)变量Splitinputstr3上调用inputstr4而不是对象属性lptmIn.inputstr3和{{1} }。改变这个:

lptmIn.inputstr4

进入这个:

lptmIn.inputstr3 = inputbox("enter names")
lptmIn.grpString1 = split(inputstr3, ",")

lptmIn.inputstr4 = inputbox("enter loss %")
lptmIn.grpString2 = split(inputstr4, ",")

另外,您需要将函数调用创建的对象分配给全局代码中的变量,否则您将在全局代码中每次出现lptmIn.inputstr3 = inputbox("enter names") lptmIn.grpString1 = split(lptmIn.inputstr3, ",") lptmIn.inputstr4 = inputbox("enter loss %") lptmIn.grpString2 = split(lptmIn.inputstr4, ",")时调用函数lptmIn

lptmIn

当两个数组中的元素数量不同时,您可能还希望避免递归调用该函数。改为使用循环。

修改后的代码:

Set obj = lptmIn
ublptm = UBound(obj.grpString1)
For i=0 To ublptm
  lptmStr = lptmstr & obj.grpString1(i)  + obj.grpString2(i) 
Next

作为旁注,变量和函数名称​​ atrocious 。我强烈建议选择更多不言自明的名字。