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还没解决,所以还不能采纳你们的答案 展开
还有这段程序有点问题
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还没解决,所以还不能采纳你们的答案 展开
2个回答
展开全部
代码本身就有大问题!为什么要用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,不要小看它,速度会加快很多
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,不要小看它,速度会加快很多
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询