当前位置:编程学习 > VB >>

数组下标越界,为何?谁给看一下

Dim myName As String, myPath As String
    ReDim mName(0) As String
    myPath = "" & App.Path & "\My Documents\MYphotos\TiBet\"
    myName = Dir(myPath)
    Do While myName <> ""   ' 开始循环。
        If Right(myName, 4) = ".bmp" Then
            'Debug.Print myPath & myName
            ReDim Preserve mName(UBound(mName) + 1) As String
            mName(UBound(mName)) = myPath & myName
        End If
        myName = Dir   ' 查找下一个目录。
    Loop
    Set P(0).Picture = LoadPicture(mName(UBound(mName)))
    Set P(1).Picture = LoadPicture(mName(1))
    Set P(2).Picture = LoadPicture(mName(2))
    n = 1 Set P(0).Picture = LoadPicture(mName(UBound(mName)))具体是哪句提示错误的?是不是这句? 你断点Debug看看你的mName里面到底有多少个值
  Set P(0).Picture = LoadPicture(mName(UBound(mName)))
  Set P(1).Picture = LoadPicture(mName(1)) '--万一里面就一个值呢
  Set P(2).Picture = LoadPicture(mName(2))'--同理  Set P(0).Picture = LoadPicture(mName(UBound(mName)))
  Set P(1).Picture = LoadPicture(mName(1))
  Set P(2).Picture = LoadPicture(mName(2))
以上三句改成以下这样:
for i=0 to ubound(mName)
    Set P(i).Picture = LoadPicture(mName(i))
next
Set P(0).Picture = LoadPicture(mName(UBound(mName))) 数组下标越界这是最普通的错误,肯定是你定义了N个数的数组,程序中企图去使用第N+1个元素 Dim myName As String, myPath As String
  ReDim mName(0) As String
  myPath = "" & App.Path & "\My Documents\MYphotos\TiBet\"
  myName = Dir(myPath)
  Do While myName <> "" ' 开始循环。
  If Right(myName, 4) = ".bmp" Then
  'Debug.Print myPath & myName
  ReDim Preserve mName(UBound(mName) + 1) As String
  mName(UBound(mName)) = myPath & myName
  End If
  myName = Dir ' 查找下一个目录。
  Loop
  Set P(0).Picture = LoadPicture(mName(UBound(mName)))
  Set P(1).Picture = LoadPicture(mName(1))
  Set P(2).Picture = LoadPicture(mName(2))
  n = 1
myPath = "" & App.Path & "\My Documents\MYphotos\TiBet\"
因为这句写相对路径没写对,我用绝对路径:myPath = D:\My Documents\MYphotos\TiBet\"
就没有错了!请问如何写相对路径才是对的 App.Path 当前应用程序所在的路径的,也是绝对路径,
把My Documents\MYphotos\TiBet\移到应用程序同一目录下
补充:VB ,  基础类
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,