VB程度读取数据太大造成假死机

我是用VB读取一个数据很大的文件,但是时间太长会造成假死机,不知道有没有什么办法解决我是初学者,我听说了加进度条和一个什么函数的,但是不知道具体怎么弄,请知道帮我写详细点... 我是用VB读取一个数据很大的文件,但是时间太长会造成假死机,不知道有没有什么办法解决我是初学者,我听说了加进度条和一个什么函数的,但是不知道具体怎么弄,请知道帮我写详细点,一定加高分
还有这段程序有点问题
Dim a(909311) As Long
Dim b(909311) As Byte
Dim c(909311) As String
Dim i As Long
Dim lj As String
dim nr as string
Private Sub Command1_Click()
Open lj For Binary As #1
For i = 0 To 909311
a(i) = i + 1
Next
For i = 0 To 909311
Get #1, a(i), b(i)
Next i
For i = 0 To 909311
c(i) = Chr(b(i))
nr = nr & c(i)
Next i
Text1.Text = nr
End Sub
Private Sub Form_Load()
lj = App.Path & "\霸王大陆.exe"
End Sub
不知道怎么的nr读出来的数据只有MZ,如果把nr变量去掉直接用text1.text=text1.text & c(i)就能直接显示出来
请高手尽快帮我解决,小弟万分感谢
非常谢谢你们的回答,但是我下面那个nr还没解决,所以还不能采纳你们的答案
展开
 我来答
二白Q0
2007-08-06 · TA获得超过2413个赞
知道大有可为答主
回答量:990
采纳率:0%
帮助的人:1093万
展开全部
代码本身就有大问题!为什么要用a(i)、b(i)、c(i)三个大数组,一个long型变量要占用4个字节的内存,909311个Long型变量要额外占用3.6M多内存
1) 直接Get 1, , b 就可以读取文件到数组了,省去a(i),节省3.6M内存,并减少90万次赋值运算
2) For i = 0 To 909311
c(i) = Chr(b(i))
nr = nr & c(i)
Next i
这段里面第二、三行可以合为一行:nr=nr & chr(b(i)),这样省去c(i)
3)另外没见你close #1啊,这样编译后再运行很危险
4)“不知道怎么的nr读出来的数据只有MZ,如果把nr变量去掉直接用text1.text=text1.text & c(i)就能直接显示出来”,这是因为那个文件中MZ之后的字节值为0,程序会认为字符串在这里已经结束

建议楼主再仔细看看get语句的语法
另外,还有一个窍门,如果已知要定义的字符串数组元素是定长的,比如像这个程序中,应该用Dim c(909311) As String * 1替换Dim c(909311) As String,不要小看它,速度会加快很多
smh1982
2007-08-06 · TA获得超过843个赞
知道小有建树答主
回答量:1578
采纳率:0%
帮助的人:889万
展开全部
DoEvents确实可以解决这个问题,但会使你的数据处理变得更慢!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式