Public Function GetPID()
    Dim ks()
    redim preserve ks(j)
    GetPID = ks
End FunctionPublic Function test()
    dim tt
    tt = GetPID()
    log.Message UBound(tt)
End Function 根据上面代码我从GetPID方法中获得一个数组,由于该数组中没有任何元素,所以我在test方法中使用时UBound方法时得到“数组下标越界”,然后我看了UBound的介绍如果数组中没有元素,UBound的返回值是Undefined,我如何判断UBound(数组名)的返回值是Undefined

解决方案 »

  1.   

    以前就有,baidu好好搜搜
    可以直接用copymemory 
      

  2.   

    safearraygetdim
      

  3.   

    判断一个数组是否初始化:
    http://bbs.csdn.net/topics/270065874
      

  4.   

    1 把数组定义放在公共段,否则它的生命周期仅限于 GetPID 函数内部。或者在函数中声明为 Static ks()。
    2 用 OnError 语句来处理错误。
    Option Explicit
    Dim ks() 
    Dim j As LongPublic Function GetPID()
        ReDim Preserve ks(j)
        GetPID = ks
    End FunctionPublic Function test()
        On Error GoTo ErrorHandler
        Dim tt
        tt = GetPID()
        MsgBox "UBound = " & UBound(tt)
        Exit Function
    ErrorHandler:
        MsgBox "Error " & Err.Number & ": " & Err.Description
    End FunctionPrivate Sub Form_Load()
        j = -1
        test
        j = 8
        test
    End Sub
      

  5.   

    好大一个坟, 不过safearray结构里专门有一个标志是表示数组是否初始化的.