第2个回答 2013-07-27
涉及的知识:
1,读取文本文件
Dim FileName As String '存放文本文件的标识符(即:盘符、路径、文件名)
Dim MyLineStr As String '用来存放读取1行文本的内容
Dim MyFileText as string '存放整个文本文件的内容
FileName = "C:\Test.txt"
MyFileText = ""
'以读的方式打开文件
Open FileName For Input As #1
Do While Not EOF(1) ' 循环至文件尾
Line Input #1, MyLineStr '读入一行
MyFileText = MyFileText & MyLineStr & vbCrLf
Loop
Close #1 ' 关闭文件。
说明:本例结束,文本文件的内容保存在变量MyFileText里。
2,分解到二维数组:
本例,当然可以在全部读到变量MyFileText里后,进行分离,但是显然,读取一行,就分离一行,效率更高吧?
讲一讲思路:
VB6有一个Split()函数,可以完成这种分离,并将分离出的数据保存到数组里:
例如:
Dim str1 As String
Dim d() As String
Dim i As Integer
str1 = "A B C D E F G"
d = Split(str1, " ")
For i = LBound(d) To UBound(d)
Print d(i)
Next i
你会看到,这段代码,把一个字符串"A B C D E F G",分离成了数组D。
关键是Split(str1, " ")函数,这里的双引号里是一个空格,意思是,把空格作为分隔符号进行分离识别。
我看了你一下,你发的数据之间似乎是2个空格,所以需要用另一个VB函数Replace()处理,这个函数叫替换函数。
在每读取一行,数据后,马上用一个空格代替替换原来的两个连续的空格,一直到文本中不存在连续两个空格为止。
3,考虑到二维数组,不能重新定义第一维度,所以先读一遍文件,获得行数,然后定义数组大小。
最后完整的代码如下:
Option Explicit
Private Sub Command1_Click()
Dim FileName As String '存放文本文件的标识符(即:盘符、路径、文件名)
Dim MyLineStr As String '用来存放读取1行文本的内容
Dim n As Integer '保存文本行数,便于定义数组的规模
Dim d() As String
Dim MyDate() As String
FileName = "C:\Test.txt"
n = 0
'以读的方式打开文件
Open FileName For Input As #1
Do While Not EOF(1) ' 循环至文件尾
n = n + 1
Line Input #1, MyLineStr '读入一行
Loop
Close #1 ' 关闭文件。
ReDim MyDate(n, 3) As String
n = 0
'以读的方式打开文件
Open FileName For Input As #1
Do While Not EOF(1) ' 循环至文件尾
n = n + 1
Line Input #1, MyLineStr '读入一行
Do While InStr(MyLineStr, " ") <> 0
MyLineStr = Replace(MyLineStr, " ", " ")
Loop
d = Split(MyLineStr)
MyDate(n, 1) = d(0)
MyDate(n, 2) = d(1)
MyDate(n, 3) = d(2)
Loop
Close #1 ' 关闭文件。
‘下面是输出显示二维数组
Dim i As Integer
Dim j As Integer
For i = 1 To n
For j = 1 To 3
Debug.Print MyDate(i, j),
Next j
Debug.Print
Next i
End Sub