VBS 2D动态数组在VB6中不起作用

时间:2016-12-01 03:55:44

标签: vbscript vb6

我正在将一些 VBS 代码转换为 VB6 。大多数练习都是复制和粘贴事务,除了这个功能,

# p is the sequence number of prime series
# n is the sequence of natural numbers to be tested if prime or not
# i is the sequence of natural numbers which will be used to devide n for testing
# L is the sequence limit of prime series user wants to see
p=2;n=3
L=int(input('Enter the how many prime numbers you want to see: '))
print ('# 1  prime is 2')
while(p<=L):
    i=2
    while i<n:
        if n%i==0:break
        i+=1
    else:print('#',p,' prime is',n); p+=1
    n+=1 #Line X

#when it breaks it doesn't execute the else and goes to the line 'X' 

代码在 VBS 中编译得很好。但是当我在VB6中使用此函数时,我得到了不同的结果。

VBS 中显示消息-1

VB6 中,这显示消息下标超出范围

为什么会这样,如何将其转换为 VB6

1 个答案:

答案 0 :(得分:3)

在VBScript中,重新整理数组使其UB​​ound为-1是一种将数组标记为空数组的方法。在VB6中,负边界是可能的,但上限必须是> =下界。请考虑以下事项:

Public Function TestMe()

    Dim RowCount: RowCount = -1
    Dim FieldCount: FieldCount = -1
    ReDim ANames(-2 To RowCount, -2 To FieldCount)
    ANames(-1, -1) = "Hi"
    MsgBox ANames(-1, -1)

End Function

在VB6中,这样运行顺利,弹出&#34;嗨&#34;正如所料。

就解决方法而言,如果ANames是数组变量,则只需使用

即可
Erase ANames

而不是你的ReDim。同样,如果ANames是变量变量(但不是数组变量),则只需为其分配Empty