VB从文本文件读取数据并赋给赋值给变量及二维数组

txt中数据如下5,273.5615,50575.215,5111.5945421.235,5257.232,117.4712275.1327,51.794211.350... txt 中数据如下
5,273. 5615 ,50575. 215 ,5111. 594
5421. 235 ,5257. 232 ,117. 4712
275. 1327 ,51. 794
211. 3505 ,66. 781
144. 3541 ,123. 898
208. 5307 ,146. 298
263. 3342 ,0
(上面数据最后一样最后一个必为0,第一行赋给n, ta, xa, ya,第二行赋给xb, yb, tb
,由第三行至n行赋给数组b(v), s(v))
请问怎样将每个数据读取给程序中的变量n, ta, xa, ya, xb, yb, tb
及数组b(v), s(v)
越简单越好!!!
用Input #1, n, ta, xa, ya, xb, yb, tb
该怎样使用!!!!!!!!!!
展开
 我来答
紫晶幻银
2015-07-03 · TA获得超过2788个赞
知道答主
回答量:167
采纳率:80%
帮助的人:19.7万
展开全部
txt 中数据如下
5,273. 5615 ,50575. 215 ,5111. 594
5421. 235 ,5257. 232 ,117. 4712
275. 1327 ,51. 794
211. 3505 ,66. 781
144. 3541 ,123. 898
208. 5307 ,146. 298
263. 3342 ,0
(上面数据最后一样最后一个必为0,第一行赋给n, ta, xa, ya,第二行赋给xb, yb, tb
,由第三行至n行赋给数组b(v), s(v))
请问怎样将每个数据读取给程序中的变量n, ta, xa, ya, xb, yb, tb
及数组b(v), s(v)
越简单越好!!!用Input #1, n, ta, xa, ya, xb, yb, tb
该怎样使用!!!!!!!!!!
分享到:

2011-05-13 20:52提问者采纳
处理文本数据库是比较简单的问题了,你可以参考我的以下几个百度答案:
http://zhidao.baidu.com/question/263695231.html
http://zhidao.baidu.com/question/261226446.html
http://zhidao.baidu.com/question/260252929.html
你这个问题请参考上面几个知道,从文件中读取的方法与上面的都是一样的,就是一次读取一行,再将这一行的内容以逗号分界分开到一个中间数组中,再判断是第几行,第一行赋值给n, ta, xa, ya,判断出读到的是第二行就赋值给xb, yb, tb,读出的是大于等于三行的数据均赋值给数组b(v), s(v)即可。当然,你这个在赋值前最好先判断一次这个txt文件总共有多少行,以便决定数组b(v), s(v)中的v的维数。
好好看看给你的参考资料,研究研究吧,你这个是非常简单的哦。
追问:
Input #1, n, ta, xa, ya, xb, yb, tb的意思就是你把文件的5,273. 5615 ,50575. 215 ,5111. 594
5421. 235 ,5257. 232 ,117. 4712(也就是文件的前2行的数值)分别赋值给n, ta, xa, ya, xb, yb, tb
其中第一行第一个数5,意思是第三行到最后一行一共5行,这个数是第三行到最后一行的行数对应的,我的意思是将第三行至最后赋给数组b(v), s(v)!根据我上边的数据这里v-1=5,也就是根据第三行到最后一行的行数决定的!
追答:
好吧,我直接给你代码吧。
你的文本文件不需要第1行的第1个数5,只要:第1行三个数、第2行三个数、从第3行开始每行两个数(随便多少行都可以),代码自己帮你自动算出那个数。
以下代码假设你文本文件是“data.txt”、位置在D盘下,以下代码写在一个命令按钮command1里【你直接复制过去运行即可、当运行完毕下列模块即把所有数据装入那些未知数里了】:
Private Sub Command1_Click()
Dim Strling As String, StrData As String, a As Long, aa As Long, x() As Single
Dim ta As Single, xa As Single, ya As Single, xb As Single, yb As Single, tb As Single
Dim b() As Single, s() As Single
Open "D:\data.txt" For Input As #1
Do Until EOF(1)
Line Input #1, Strling
If Strling <> "" Then a = a + 1
Loop
ReDim b(a - 2), s(a - 2)
Strling = ""
Do Until EOF(1)
Line Input #1, Strling
If Strling <> "" Then
aa = aa + 1
x() = Split(StrLine, ",")
Select Case aa
Case 1
ta = x(0): xa = x(1): ya = x(2)
Case 2
xb = x(0): yb = x(1): tb = x(2)
Case Is >= 3
b(aa - 2) = x(0): s(aa - 2) = x(1)
End Select
End If
Loop
Close #1
MsgBox "文本文件已经输入到所有变量中!" & vbCrLf & "您的文本文件中除了第1行第2行外、还有" & a - 2 & "行。", vbOKOnly, "打开数据成功"
End Sub

注意,数据结构如下:
273.5615,50575.215,5111.594
5421.235,5257.232,117.4712
275.1327,51.794
211.3505,66.781
144.3541,123.898
208.5307,146.298
。。。。。 '省略号代表随便你多少行都可以
263.3342,0
第一行装进:ta 、xa 、ya
第二行装进:xb 、yb、tb
第三行以后均为:每行的第一个数装在b()里、第二个数装在s()里
b()和s()的范围都是从b(1)、s(1)开始、直到最后一行 如上面的b(5)、s(5) 这里的5即代表没有算前两行。
baogege1980
推荐于2017-09-14 · TA获得超过12.8万个赞
知道大有可为答主
回答量:1.5万
采纳率:94%
帮助的人:2870万
展开全部
你要做什么计算?aa和bb都可以用于计算的

Private Sub Command1_Click()
Dim aa(), bb(), a, b, n As Integer, i As Integer, fname As String

fname = "d:\1.txt" '文件名,可自行更改

'获得文本文件的行数,实际行数为n+1
Open fname For Binary As #1
a = StrConv(InputB(LOF(1), 1), vbUnicode)
Close #1
b = Split(a, vbCrLf)
n = UBound(b)

ReDim aa(n, 1),bb(n, 1) '将动态数组定义为二维数组

'开始从文件中读取数据,赋值给二维数组aa和bb
i = 0
Open fname For Input As #1
Do While Not EOF(1)
Input #1, aa(i, 0), aa(i, 1)
bb(i, 0)=aa(i, 0)
bb(i, 1)=aa(i, 1)
i = i + 1
Loop
Close #1

'打印读出的二维数组
Cls
For j = 0 To i - 1
Print aa(j, 0), aa(j, 1)
Next
End Sub
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
甜咖啡很甜
2011-05-13 · TA获得超过316个赞
知道小有建树答主
回答量:231
采纳率:0%
帮助的人:206万
展开全部
这个是顺序文件的读取,就是得一个一个的来读取,这得用input函数,具体用法是:
open “path'” for input as#1
input#1,a,b,c……
close#1
其中path是文件的路径名。
Input #1, n, ta, xa, ya, xb, yb, tb的意思就是你把文件的5,273. 5615 ,50575. 215 ,5111. 594
5421. 235 ,5257. 232 ,117. 4712(也就是文件的前2行的数值)分别赋值给n, ta, xa, ya, xb, yb, tb,至于你说的
怎样将每个数据读取给程序中的变量n, ta, xa, ya, xb, yb, tb
及数组b(v), s(v),这个问题问得好,但是很模糊,因为不知道你的
b(v)的下标的上上界是多少,你讲得具体点,再追问,我给你看看
更多追问追答
追问
Input #1, n, ta, xa, ya, xb, yb, tb的意思就是你把文件的5,273. 5615 ,50575. 215 ,5111. 594
5421. 235 ,5257. 232 ,117. 4712(也就是文件的前2行的数值)分别赋值给n, ta, xa, ya, xb, yb, tb
其中第一行第一个数5,意思是第三行到最后一行一共5行,这个数是第三行到最后一行的行数对应的,我的意思是将第三行至最后赋给数组b(v), s(v)!
追答
那你的 v是多少呢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yangyingjun999
2011-05-13 · TA获得超过1230个赞
知道小有建树答主
回答量:782
采纳率:0%
帮助的人:410万
展开全部
处理文本数据库是比较简单的问题了,你可以参考我的以下几个百度答案:
http://zhidao.baidu.com/question/263695231.html
http://zhidao.baidu.com/question/261226446.html
http://zhidao.baidu.com/question/260252929.html
你这个问题请参考上面几个知道,从文件中读取的方法与上面的都是一样的,就是一次读取一行,再将这一行的内容以逗号分界分开到一个中间数组中,再判断是第几行,第一行赋值给n, ta, xa, ya,判断出读到的是第二行就赋值给xb, yb, tb,读出的是大于等于三行的数据均赋值给数组b(v), s(v)即可。当然,你这个在赋值前最好先判断一次这个txt文件总共有多少行,以便决定数组b(v), s(v)中的v的维数。
好好看看给你的参考资料,研究研究吧,你这个是非常简单的哦。
追问
Input #1, n, ta, xa, ya, xb, yb, tb的意思就是你把文件的5,273. 5615 ,50575. 215 ,5111. 594
5421. 235 ,5257. 232 ,117. 4712(也就是文件的前2行的数值)分别赋值给n, ta, xa, ya, xb, yb, tb
其中第一行第一个数5,意思是第三行到最后一行一共5行,这个数是第三行到最后一行的行数对应的,我的意思是将第三行至最后赋给数组b(v), s(v)!根据我上边的数据这里v-1=5,也就是根据第三行到最后一行的行数决定的!
追答
好吧,我直接给你代码吧。
你的文本文件不需要第1行的第1个数5,只要:第1行三个数、第2行三个数、从第3行开始每行两个数(随便多少行都可以),代码自己帮你自动算出那个数。
以下代码假设你文本文件是“data.txt”、位置在D盘下,以下代码写在一个命令按钮command1里【你直接复制过去运行即可、当运行完毕下列模块即把所有数据装入那些未知数里了】:
Private Sub Command1_Click()
Dim Strling As String, StrData As String, a As Long, aa As Long, x() As Single
Dim ta As Single, xa As Single, ya As Single, xb As Single, yb As Single, tb As Single
Dim b() As Single, s() As Single
Open "D:\data.txt" For Input As #1
Do Until EOF(1)
Line Input #1, Strling
If Strling "" Then a = a + 1
Loop
ReDim b(a - 2), s(a - 2)
Strling = ""
Do Until EOF(1)
Line Input #1, Strling
If Strling "" Then
aa = aa + 1
x() = Split(StrLine, ",")
Select Case aa
Case 1
ta = x(0): xa = x(1): ya = x(2)
Case 2
xb = x(0): yb = x(1): tb = x(2)
Case Is >= 3
b(aa - 2) = x(0): s(aa - 2) = x(1)
End Select
End If
Loop
Close #1
MsgBox "文本文件已经输入到所有变量中!" & vbCrLf & "您的文本文件中除了第1行第2行外、还有" & a - 2 & "行。", vbOKOnly, "打开数据成功"
End Sub

注意,数据结构如下:
273.5615,50575.215,5111.594
5421.235,5257.232,117.4712
275.1327,51.794
211.3505,66.781
144.3541,123.898
208.5307,146.298
。。。。。 '省略号代表随便你多少行都可以
263.3342,0
第一行装进:ta 、xa 、ya
第二行装进:xb 、yb、tb
第三行以后均为:每行的第一个数装在b()里、第二个数装在s()里
b()和s()的范围都是从b(1)、s(1)开始、直到最后一行 如上面的b(5)、s(5) 这里的5即代表没有算前两行。
好了,你的这个问题也就解决了。
再不明白就直接到我的留言薄询问吧http://www.iz88.net/book/book_write.asp
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yunnan1234567
2011-05-27
知道答主
回答量:7
采纳率:0%
帮助的人:0
展开全部
答案已经有啦(有两个回答的蛮辛苦了),不过:看见这个楼主好像得了答案就逃之夭夭啦
鄙视这样的提问者。

我有更好的答案,也不会给这样的小人回答的,拜拜啦。。。。。
。。。。。。。。。。。。。。。。。。。。。。。。。。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式