arrays - vb6 数组,上限为 -1

标签 arrays vb6 upperbound

一些函数,例如 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/

相关文章:

php - 如何按值对多维数组进行排序?

javascript - 将动态元素/行添加到 Angularjs 中的多维 Json 数组

javascript - 我需要包装数组的每个元素,甚至是子元素,我正在使用 JavaScript

相当于 C++ equal_range(或 lower_bound 和 upper_bound)的 Java

c - 将字符串输入到结构体数组的 char 指针成员

regex - 正则表达式在 vb6 中的使用

vb6 - 用VB6开发免注册COM应用程序

winapi - 更改使用资源文件的VB6项目的exe图标

java - 设置图中图表的UpperBound

C++ STL 算法 upper_bound() 不是严格大于