主题:关于vb读txt里的矩阵到数组变量的问题
我是初学者,在网上也查了很多资料,但还是效果不理想
我要达到的效果是:
(1) 使用commondialog打开对话框选择txt文件,文件中的数据是按照矩阵的方式排列的,要将矩阵中的数据存到一个二维数组变量中去,维数不能确定,也就是说数据的行和列每一次输入都会有差别(至少行数每次应该都不一样)。我看书和网上的东西写了一个,程序没报错,但是可能有问题,因为数组的维数不知道是怎么体现的,代码如下:
Private Sub Command2_Click()
Dim i As Integer
Dim s As String
Dim a As Variant
Dim t As String
filenum = FreeFile()
On Error GoTo ErrHandler
CommonDialog1.Filter = "ALL Files(*.*)|*.*|" & "Text Files(*.txt)|*.txt|"
CommonDialog1.FilterIndex = 2
CommonDialog1.ShowOpen
Open CommonDialog1.FileName For Input As #filenum
While Not EOF(filenum)
Line Input #filenum, s
s = Trim(s)
While s <> t
t = s
s = Replace(s, " ", " ")
Wend
a = Split(s, " ")
For i = 0 To UBound(a)
Debug.Print a(i)
Next
Wend
'Print IsArray(a)
Print a(3)
Close #filenum
ErrHandler:
Exit Sub
End Sub
请大家看看有什么问题,要是有别的办法实现上述功能也请赐教。
(2)存储数组数据到txt
假如已经有了一个二维数据,要将这些数据存入txt中,也是用commondialog实现,写入txt后数据排列的规则一定也是和矩阵的排列一致的,这个又怎么实现呢,我写的一个打印之后是一列的,很迷惑,请赐教。我写的代码如下:
Private Sub Command3_Click()
Dim a(1 To 2, 1 To 2) As Double
filenum = FreeFile()
On Error GoTo ErrHandler
With CommonDialog2
.Filter = "txt文本(*.txt)"
.ShowSave
End With
Open CommonDialog2.FileName For Output As #filenum
a(1, 1) = 1
a(1, 2) = 2
a(2, 1) = 3
a(2, 2) = 5
For i = 1 To 2
For j = 1 To 2
Print #filenum, a(i, j)
Next j
Next i
Close #filenum
ErrHandler:
Exit Sub
End Sub
另:上面这些代码一部分是看书,一部分是查阅网上资料,已经看了很久,一直不能达到效果,请高手们不要嫌弃小弟的问题幼稚,耽误各位一点时间给出解答,不胜感谢!
我要达到的效果是:
(1) 使用commondialog打开对话框选择txt文件,文件中的数据是按照矩阵的方式排列的,要将矩阵中的数据存到一个二维数组变量中去,维数不能确定,也就是说数据的行和列每一次输入都会有差别(至少行数每次应该都不一样)。我看书和网上的东西写了一个,程序没报错,但是可能有问题,因为数组的维数不知道是怎么体现的,代码如下:
Private Sub Command2_Click()
Dim i As Integer
Dim s As String
Dim a As Variant
Dim t As String
filenum = FreeFile()
On Error GoTo ErrHandler
CommonDialog1.Filter = "ALL Files(*.*)|*.*|" & "Text Files(*.txt)|*.txt|"
CommonDialog1.FilterIndex = 2
CommonDialog1.ShowOpen
Open CommonDialog1.FileName For Input As #filenum
While Not EOF(filenum)
Line Input #filenum, s
s = Trim(s)
While s <> t
t = s
s = Replace(s, " ", " ")
Wend
a = Split(s, " ")
For i = 0 To UBound(a)
Debug.Print a(i)
Next
Wend
'Print IsArray(a)
Print a(3)
Close #filenum
ErrHandler:
Exit Sub
End Sub
请大家看看有什么问题,要是有别的办法实现上述功能也请赐教。
(2)存储数组数据到txt
假如已经有了一个二维数据,要将这些数据存入txt中,也是用commondialog实现,写入txt后数据排列的规则一定也是和矩阵的排列一致的,这个又怎么实现呢,我写的一个打印之后是一列的,很迷惑,请赐教。我写的代码如下:
Private Sub Command3_Click()
Dim a(1 To 2, 1 To 2) As Double
filenum = FreeFile()
On Error GoTo ErrHandler
With CommonDialog2
.Filter = "txt文本(*.txt)"
.ShowSave
End With
Open CommonDialog2.FileName For Output As #filenum
a(1, 1) = 1
a(1, 2) = 2
a(2, 1) = 3
a(2, 2) = 5
For i = 1 To 2
For j = 1 To 2
Print #filenum, a(i, j)
Next j
Next i
Close #filenum
ErrHandler:
Exit Sub
End Sub
另:上面这些代码一部分是看书,一部分是查阅网上资料,已经看了很久,一直不能达到效果,请高手们不要嫌弃小弟的问题幼稚,耽误各位一点时间给出解答,不胜感谢!