加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

数组 – 如何确定数组是否在VB6中初始化?

发布时间:2020-12-16 22:19:27 所属栏目:大数据 来源:网络整理
导读:传递一个undimensioned数组到VB6的Ubound函数将导致一个错误,所以我想检查它是否已经被确定尺寸,然后尝试检查其上限。我如何做到这一点? 我使用这个: Public Declare Function GetMem4 Lib "msvbvm60" (ByVal pSrc As Long,ByVal pDst As Long) As LongP
传递一个undimensioned数组到VB6的Ubound函数将导致一个错误,所以我想检查它是否已经被确定尺寸,然后尝试检查其上限。我如何做到这一点?
我使用这个:
Public Declare Function GetMem4 Lib "msvbvm60" (ByVal pSrc As Long,ByVal pDst As Long) As Long
Public Declare Function ArrPtr Lib "msvbvm60" Alias "VarPtr" (arr() As Any) As Long

Public Function StrArrPtr(arr() As String,Optional ByVal IgnoreMe As Long = 0) As Long
  GetMem4 VarPtr(IgnoreMe) - 4,VarPtr(StrArrPtr)
End Function

Public Function UDTArrPtr(ByRef arr As Variant) As Long
  If VarType(arr) Or vbArray Then
    GetMem4 VarPtr(arr) + 8,VarPtr(UDTArrPtr)
  Else
    Err.Raise 5,"Variant must contain array of user defined type"
  End If
End Function


Public Function ArrayExists(ByVal ppArray As Long) As Long
  GetMem4 ppArray,VarPtr(ArrayExists)
End Function

用法:

? ArrayExists(ArrPtr(someArray))
? ArrayExists(StrArrPtr(someArrayOfStrings))
? ArrayExists(UDTArrPtr(someArrayOfUDTs))

你的代码似乎做同样的(测试SAFEARRAY **为NULL),但在一种方式,我会考虑一个编译器错误:)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读