注册 登录
编程论坛 新人交流区

请教有关把数据文件读入文本框的程序问题

jiafeng6 发布于 2007-10-09 22:10, 539 次点击
程序实现的功能:打开数据文件输入到text1.text中

Private Sub Command1_Click()
Dim strFilename As String
Dim strLine As String
CommonDialog1.ShowOpen
strFilename = CommonDialog1.FileName
Text1.Text = ""
filenum = FreeFile
If strFilename <> "" Then
Open strFilename For Input As filenum
Do While Not EOF(filenum)
Line Input #filenum, strLine
Text1.Text = Text1.Text + strLine + Chr(13) + Chr(10)
Loop
Close filenum
End If
End Sub
问题:
1、为什么在读入大量的数据的时候会很慢(比如一行5个数据,共8000行的数据)??
2、而且读进TEXT1.TEXT的数据也不全(比如一行5个数据,共8000行的数据,只能读进去一部分)??
比如说把上传的示例数据文件读入,就读不全,而且很慢!

2 回复
#2
放纵思想2007-10-09 22:41
If strFilename <> "" Then
Open strFilename For Input As filenum
Do While Not EOF(filenum)
Line Input #filenum, strLine
Text1.Text = Text1.Text + strLine + Chr(13) + Chr(10)
Loop
Close filenum
End If


改为:

If strFilename <> "" Then
Dim s As String
Open strFilename For Input As filenum
Do While Not EOF(filenum)
Line Input #filenum, strLine
s = s & strLine & Chr(13) & Chr(10)
'Text1.Text = Text1.Text + strLine + Chr(13) + Chr(10)
Loop
Close filenum
Text1.Text = s
End If



#3
放纵思想2007-10-09 22:55

可以用以下方法测试两种方法的运行时间差别,可以看到方法运行时间为 0 ,而方法二运行时间达到100以上,效率差距是很大的.

Private Declare Function timeGetTime Lib "winmm.dll" () As Long

Private Sub Command1_Click()
Dim StartTime As Long, EndTime As Long, Time1 As Long, Time2 As Long

Dim i As Integer, s As String

'测试第一种方法
StartTime = timeGetTime
For i = 0 To 1000
s = s & CStr(i)
Next
Text1.Text = s
EndTime = timeGetTime
Text1.Text = ""
Time1 = EndTime - StartTime

'测试第二种方法
StartTime = timeGetTime
For i = 0 To 1000
Text1.Text = Text1.Text & CStr(i)
Next

EndTime = timeGetTime
Time2 = EndTime - StartTime

MsgBox "方法一用时: " & CStr(Time1) & " 毫秒" & vbCrLf & _
"方法二用时: " & CStr(Time2) & " 毫秒" & vbCrLf & _
"相差: " & CStr(Time2 - Time1) & " 毫秒"
End Sub

[此贴子已经被作者于2007-10-9 22:56:52编辑过]

1