注册 登录
编程论坛 VB6论坛

二维数组的问题

沉默的痞子 发布于 2017-11-10 17:23, 1471 次点击
我的目的是为了防止溢出,数组下限到1000万的时候,保存到另一组去

程序代码:
Open filename For Input As #1
    Do Until EOF(1)
        Line Input #1, txt
        If txt <> "" Then
            ReDim Preserve sz(ws, 0 To hs) As String
            sz(ws, hs) = txt
            hs = hs + 1
            If hs >= 10000000 Then Stop: hs = 0: ws = ws + 1
        End If
    Loop
Close #1


这里的数量大于1000万就会出错,用第二种方案
程序代码:
ReDim Preserve sz(5, 0 To hs) As String
'读取文件内容
Open filename For Input As #1
    Do Until EOF(1)
        Line Input #1, txt
        If txt <> "" Then
            ReDim Preserve sz(5, 0 To hs) As String
            sz(ws, hs) = txt
            hs = hs + 1
            If hs >= 10000000 Then Stop: hs = 0: ws = ws + 1
            hs = hs + 1
        End If
    Loop
Close #1

但是这里的redim 会把6组的下限都改成一样的,怎么破
4 回复
#2
风吹过b2017-11-10 17:37
你读这以大的数据到内存里,不怕内存爆掉?
然后WINDOWS 为了给你内存,狂占 虚拟内存?

你可以使用多次读写文件的办法来少占内存吗?

#3
沉默的痞子2017-11-11 09:27
回复 2楼 风吹过b
不怕
多次读写咋弄?我是要读出来,然后在这里面搜索的,如果一段一段读,是要读一段,搜索一下,没有再读下一段吗?读下一段要把原来这段先删掉吗?
#4
风吹过b2017-11-11 13:32
你试试结构体加数组吧

public type dtype  结构体定义
  a() as string
end type

dim sz() as dtype  原始定义

redim Preserve sz(x)  修改数组元素个数
redim Preserve sz(x).a(y)  修改数组元素对应数组的大小
访问,使用 sz(x).a(y) 的方式访问,不是使用 多维数组的方式访问
每个子数组不要求一样大,单独定义的

试试吧,从来没有这样狂占过内存来。

#5
沉默的痞子2017-11-11 13:51
回复 4楼 风吹过b
厉害了,我试过这个,但是差一点……
type arr
    a() as string
    b() as string
end type....
1