首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

为什么下列代码中的动态数组不需要REDIM?解决思路

2012-05-14 
为什么下列代码中的动态数组不需要REDIM?VB codePrivate Sub Command1_Click()Dim FileNumber As IntegerD

为什么下列代码中的动态数组不需要REDIM?

VB code
Private Sub Command1_Click()    Dim FileNumber As Integer    Dim sFile() As String, S As String    Dim FileByte() As Byte    Dim dateStr() As String    FileNumber = FreeFile    ' ?靹???CancelError???? True    ComDiaReader.CancelError = True    On Error GoTo ErrHandler    ' ?靹????    ComDiaReader.Flags = cdlOFNHideReadOnly    ' ?靹???????    ComDiaReader.Filter = "All Files (*.*)|*.*|sp3 Files" & "(*.sp3)|*.sp3|"    ' ????????????????    ComDiaReader.FilterIndex = 2    ' ????????????????    ComDiaReader.ShowOpen    ' ???????????????錥?    Open ComDiaReader.FileName For Binary As #FileNumber    ReDim FileByte(LOF(FileNumber) - 1)    Get #FileNumber, , FileByte    S = StrConv(FileByte, vbUnicode)    sFile = Split(S, Chr(10) & "*")    Close #FileNumber    For i = 1 To Val(UBound(sFile))        Text1.Text = Text1.Text & "1"        sFile(i) = Mid(sFile(i), 3, 16)    Next iErrHandler:    ' ?????????????蠇?????    Exit SubEnd Sub

动态数组不是需要REDIM吗?为什么用split函数就可以省去redim?求解。
另:乱码为注释,不影响阅读。

[解决办法]
dim A() as ....次命令执行其实是定义一个Long(4字节)的变量位置,redim是创建一个数组,并将数组(事实上是数组头)的位置(指针)拷贝到A这个变量中。

split会根据需要,自己申请一个数组需要的空间,然后将数据数组位置(既指向数组头的指针)拷贝到A中

因此,代码中不需要字节redim

热点排行