| 网站首页 | 业界新闻 | 群组 | 人才 | 技术文章 | 下载频道 | 博客 | 代码贴 | 编程论坛
共有 144 人关注过本帖
标题:二维数组的问题
只看楼主 收藏
沉默的痞子
Rank: 2
等 级:论坛游民
帖 子:36
专家分:37
注 册:2015-10-7
结帖率:62.5%
  已结贴   问题点数:5  回复次数:4   
二维数组的问题
我的目的是为了防止溢出,数组下限到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组的下限都改成一样的,怎么破
2017-11-10 17:23
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:186
帖 子:4059
专家分:25013
注 册:2008-10-15
  得分:0 
你读这以大的数据到内存里,不怕内存爆掉?
然后WINDOWS 为了给你内存,狂占 虚拟内存?

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


授人于鱼,不如授人于渔
早已停用QQ了
2017-11-10 17:37
沉默的痞子
Rank: 2
等 级:论坛游民
帖 子:36
专家分:37
注 册:2015-10-7
  得分:0 
回复 2楼 风吹过b
不怕
多次读写咋弄?我是要读出来,然后在这里面搜索的,如果一段一段读,是要读一段,搜索一下,没有再读下一段吗?读下一段要把原来这段先删掉吗?
2017-11-11 09:27
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:186
帖 子:4059
专家分:25013
注 册:2008-10-15
  得分:5 
你试试结构体加数组吧

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) 的方式访问,不是使用 多维数组的方式访问
每个子数组不要求一样大,单独定义的

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


授人于鱼,不如授人于渔
早已停用QQ了
2017-11-11 13:32
沉默的痞子
Rank: 2
等 级:论坛游民
帖 子:36
专家分:37
注 册:2015-10-7
  得分:0 
回复 4楼 风吹过b
厉害了,我试过这个,但是差一点……
type arr
    a() as string
    b() as string
end type....
2017-11-11 13:51







关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.067526 second(s), 8 queries.
Copyright©2004-2017, BCCN.NET, All Rights Reserved