一些函数,例如 Split()
将返回一个数组,如果数组没有项,则返回 -1 为上限,0 为下限,例如:
Dim s() As String
s = Split("", ",")
Debug.Print UBound(s)
Debug.Pring LBound(s)
在这种情况下,UBound(s) 将等于 -1,LBound(s) 将等于 0。我有大量代码检查上限是否为 -1,以查看数组是否有值。这很好用。
问题是我现在想将数组数据类型从字符串更改为长整型。我似乎无法创建一个上限为 -1 、下限为 0 的 long 数组,并且 Split()
和 Join()
函数只能在字符串数组。
我希望能够返回一个上限为 -1 的长数组。这可能吗?
最佳答案
我不认为你可以在 VB6 中自行完成它。但是,如果您愿意使用Windows API函数SafeArrayCreateVector你可以做到:
Private Declare Function LongSplitEmulator Lib "OLEAUT32.DLL" Alias "SafeArrayCreateVector" _
(Optional ByVal vt As VbVarType = vbLong, _
Optional ByVal low As Long = 0, _
Optional ByVal count As Long = 0) As Long()
Dim a() As Long
a = LongSplitEmulator()
MsgBox UBound(a)
如果您需要对其他数据类型执行此操作,可以更改 vt 参数。
请注意,我想我最初是从 Vi2 对此问题的回答 discussion 中发现这一点的。 .
关于arrays - vb6 数组,上限为 -1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7099352/