回 帖 发 新 帖 刷新版面

主题:关于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
另:上面这些代码一部分是看书,一部分是查阅网上资料,已经看了很久,一直不能达到效果,请高手们不要嫌弃小弟的问题幼稚,耽误各位一点时间给出解答,不胜感谢!

回复列表 (共2个回复)

沙发

说说你运行的结果是什么
哪里和你像的不一样

板凳

首先感谢高手的关心,这个问题基本上已经解决了,已经可以把txt中的矩阵数据转到定义好的数组中去了
我现在想问下我上面读入txt的代码中存到a中的数据是怎么放置的
按照程序a应该是一行一行的数据,但是这个程序已经把所有的txt数据都存到a中了,那么a中的数据又是怎么样的结构呢?
还有如果我有了一个数组b,在不知道行和列的情况下,怎么将这个数组存到txt文件中
谢谢!!!!

我来回复

您尚未登录,请登录后再回复。点此登录或注册