一个关于VB编程的问题!!!

来源:百度知道 编辑:UC知道 时间:2024/05/22 00:38:30
大家好,我在编程时遇到了一个问题,问题就出在下面这段程序。这段程序我在调试和编译时都不报错,可是我编译完成后一运行就提示“数组下标越界”,可我怎么看都看不来为什么越界,请各位高手帮我看看,小弟不胜感激!!!
Public Function ReadFile(strFilePath As String) As String()
Dim fso As New FileSystemObject
Dim file
Dim IsFileExist As Boolean
Dim ts As TextStream
Dim strData() As String
ReDim strData(0)
IsFileExist = fso.FileExists(strFilePath)
If IsFileExist = True Then
Set file = fso.GetFile(strFilePath)
Set ts = file.OpenAsTextStream(ForReading)
While Not ts.AtEndOfStream
ReDim Preserve strData(UBound(strData) + 1)
strData(UBound(strData)) = ts.ReadLine
Wend
ts.Close
End If
ReadFile = strData
End Function
我编译和调试也不报错,就是生成EXE文件后一运行就提示“数组下标越界”。因为这段程序在我的FORM LOAD中,所以我肯定问题就出在这里。。。

此函数应该没有错误,在WinXP sp2 + VB6 sp6下测试通过

Private Sub Command1_Click()
Dim pp() As String
Dim i As Integer
pp = ReadFile("d:\a.txt")
For i = 1 To UBound(pp)
MsgBox pp(i)
Next
End Sub

怪事儿了,我已经把以上代码放在Load里面用生成的EXE文件试过了,没有问题,你可以用我的代码试一下,如果仍有问题的话,可能是你的VB或是系统有问题了,把sp6的补丁打上,另外最好检查一下有没有在LOAD里面操作数组或是Grid之类的。从前也遇到过VB这类的错误,在调试时期看不到问题,只有运行的时候才可以出现,当时无法解决,你可以重装系统或VB试下。

使用redim关键字设置动态数组大小

动态数组的用法:
组到底应该有多大才合适,有时可能不得而知。所以希望能够在运行时具有改变数组大小的能力。

动态数组就可以在任何时候改变大小。在 Visual Basic 中,动态数组最灵活、最方便,有助于有效管理内存。例如,可短时间使用一个大数组,然后,在不使用这个数组时,将内存空间释放给系统。

如果不用动态数组,就要声明一个数组,它的大小尽可能达到最大,然后再抹去那些不必要的元素。但是,如果过度使用这种方法,会导致内存的操作环境变慢。

要创建动态数组,请按照以下步骤执行:

(如果希望数组为公用数组,则)用 Public 语句声明数组,或者,(如果希望数组为模块级,则)在模块级用 Dim 语句声明数组,或者(如果希望数组为局部数组,则)在过程中用 Static 或 Dim 语句声明数组。给数组附以一个空维数表,这样就将数组声明为动态数组。
Dim DynArray ()

用 ReDim 语句分配实际的元素个数。
ReDim DynArray (X + 1)