数组 – 如何确定数组是否在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),但在一种方式,我会考虑一个编译器错误:) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |