vb 读取txt 画曲线
场景:
急!VB读取TXT数据,并画曲线图
读取TXT内的数据,然后在坐标纸上绘制折线图:
TXT数据:T S S S T T T S T S S
坐标横轴是T,纵轴是S。当出现一个T时,在坐标纸上画200单位的横线,出现S画200单位的横线,就像楼梯式折线。
我的代码是:
Open "st.txt" For Input As #1 '只读方式打开输入文件
Do While Not EOF(1)
Line Input #1, m
Select Case m
Case "T"
Picture2.Line (x, y)-(x + 200, y), RGB(255, 0, 0)
x = x + 200
Case "S"
Picture2.Line (x, y)-(x, y - 200), RGB(255, 0, 0)
y = y - 200 '纵轴坐标是递减的
End Select
Loop
Close #1
运行结果是没有折线输出,如果取消Select语句还有折线输出
各位大侠指导一下,感激不尽!!!!
------解决方案--------------------
y - 200改为y + 200
------解决方案--------------------
还是老问题,如果把Select去掉,还能画三段折线。加上Select怎么改画线方法都没有作用
------解决方案--------------------
Line Input #1, m 此时m已经全部获取了txt的数据
在后面的Select语句中已经不能一个接着一个读取m了,所以不能执行Select里面的Line
请问怎样一个接着一个读取txt里的数据,这样挨着判断估计能得到折线图
------解决方案--------------------
用
------解决方案--------------------
还是老毛病,Select外边有s或者m的数据,进入Select后,数据显示为空。怎么办呢,急死我了。读取TXT数据绘制折线图到现在还是搞不懂,大侠们帮帮忙哦
------解决方案--------------------
Open "st.txt" For Input As #1 '只读方式打开输入文件
Line Input #1, s
Close #1
For Each m In Split(s," ")
Select Case m
Case "T"
Picture2.Line (x, y)-(x + 200, y), RGB(255, 0, 0)
x = x + 200
Case "S"
Picture2.Line (x, y)-(x, y - 200), RGB(255, 0, 0)
y = y - 200 '纵轴坐标是递减的
End Select
Next m
------解决方案--------------------
问题还是没解决,不过还是谢谢你,让我学会了For each。
关于读取文本数据,绘制折线图,你们觉得应该怎样设计
------解决方案--------------------
我这里y - 200改为y + 200都调试通过了的,楼主是眼神不好还是不屑一顾?
------解决方案--------------------
你的X,Y的初始值是多少?
按你现在的程序看,X,Y初始值是0,这时候,你的Y-200,实际得到的是负数,也就是说,你画的折线是在现实区域以外的。
就你现在的程序,别的地方都不用动
1、把你的
改成Picture2.Line (x, y)-(x, y + 200), RGB(255, 0, 0)
y = y + 200 '纵轴坐标是递减的
[/code]
2、就是给,X,Y赋个初始值,比如:X=2000,Y=1000
把这句加到Do While Not EOF(1)这句前边就行。
3、你的st.txt文件里的数据格式也要改变,
要么一个字符占一行如:
T
S
T
T
S
S
要么,就按四楼的方法,先分组数据,然后再处理
------解决方案--------------------
Private Sub Command1_Click()
Open "st.txt" For Input As #1 '只读方式打开输入文件
Line Input #1, s
Close #1
For Each M In Split(s, " ")
MsgBox M
Select Case M
Case "T"
Picture2.Line (X, Y)-(X + 200, Y), RGB(255, 0, 0)
X = X + 200
Case "S"
Picture2.Line (X, Y)-(X, Y + 200), RGB(255, 0, 0)
Y = Y + 200 '纵轴坐标是递减的
End Select
Next M
End Sub
------解决方案--------------------
运行完后,没有一个成功
------解决方案--------------------
看来楼主是那种谁也教不会的,俺承认俺教错了人.
TXT数据:必须是一列.我上面改了一个符号就成功了
T
S
S
S
T
T
T
S
T
S
S
------解决方案--------------------
楼上各位不好意思,我的TXT文件是直接从Excel中复制过来的,字符间有表格列宽,所以读取错误。重新写TXT数据后,问题解决了。真是不好意思,非常感谢楼上各位的指导。
急!VB读取TXT数据,并画曲线图
读取TXT内的数据,然后在坐标纸上绘制折线图:
TXT数据:T S S S T T T S T S S
坐标横轴是T,纵轴是S。当出现一个T时,在坐标纸上画200单位的横线,出现S画200单位的横线,就像楼梯式折线。
我的代码是:
Open "st.txt" For Input As #1 '只读方式打开输入文件
Do While Not EOF(1)
Line Input #1, m
Select Case m
Case "T"
Picture2.Line (x, y)-(x + 200, y), RGB(255, 0, 0)
x = x + 200
Case "S"
Picture2.Line (x, y)-(x, y - 200), RGB(255, 0, 0)
y = y - 200 '纵轴坐标是递减的
End Select
Loop
Close #1
运行结果是没有折线输出,如果取消Select语句还有折线输出
各位大侠指导一下,感激不尽!!!!
------解决方案--------------------
y - 200改为y + 200
------解决方案--------------------
还是老问题,如果把Select去掉,还能画三段折线。加上Select怎么改画线方法都没有作用
------解决方案--------------------
Line Input #1, m 此时m已经全部获取了txt的数据
在后面的Select语句中已经不能一个接着一个读取m了,所以不能执行Select里面的Line
请问怎样一个接着一个读取txt里的数据,这样挨着判断估计能得到折线图
------解决方案--------------------
用
dim s()
s=Split(m," ")
for i=0 to ubound(s)
....
next i
------解决方案--------------------
还是老毛病,Select外边有s或者m的数据,进入Select后,数据显示为空。怎么办呢,急死我了。读取TXT数据绘制折线图到现在还是搞不懂,大侠们帮帮忙哦
------解决方案--------------------
Open "st.txt" For Input As #1 '只读方式打开输入文件
Line Input #1, s
Close #1
For Each m In Split(s," ")
Select Case m
Case "T"
Picture2.Line (x, y)-(x + 200, y), RGB(255, 0, 0)
x = x + 200
Case "S"
Picture2.Line (x, y)-(x, y - 200), RGB(255, 0, 0)
y = y - 200 '纵轴坐标是递减的
End Select
Next m
------解决方案--------------------
问题还是没解决,不过还是谢谢你,让我学会了For each。
关于读取文本数据,绘制折线图,你们觉得应该怎样设计
------解决方案--------------------
我这里y - 200改为y + 200都调试通过了的,楼主是眼神不好还是不屑一顾?
------解决方案--------------------
你的X,Y的初始值是多少?
按你现在的程序看,X,Y初始值是0,这时候,你的Y-200,实际得到的是负数,也就是说,你画的折线是在现实区域以外的。
就你现在的程序,别的地方都不用动
1、把你的
Picture2.Line (x, y)-(x, y - 200), RGB(255, 0, 0)
y = y - 200 '纵轴坐标是递减的
改成Picture2.Line (x, y)-(x, y + 200), RGB(255, 0, 0)
y = y + 200 '纵轴坐标是递减的
[/code]
2、就是给,X,Y赋个初始值,比如:X=2000,Y=1000
把这句加到Do While Not EOF(1)这句前边就行。
3、你的st.txt文件里的数据格式也要改变,
要么一个字符占一行如:
T
S
T
T
S
S
要么,就按四楼的方法,先分组数据,然后再处理
------解决方案--------------------
Private Sub Command1_Click()
Open "st.txt" For Input As #1 '只读方式打开输入文件
Line Input #1, s
Close #1
For Each M In Split(s, " ")
MsgBox M
Select Case M
Case "T"
Picture2.Line (X, Y)-(X + 200, Y), RGB(255, 0, 0)
X = X + 200
Case "S"
Picture2.Line (X, Y)-(X, Y + 200), RGB(255, 0, 0)
Y = Y + 200 '纵轴坐标是递减的
End Select
Next M
End Sub
------解决方案--------------------
运行完后,没有一个成功
------解决方案--------------------
看来楼主是那种谁也教不会的,俺承认俺教错了人.
TXT数据:必须是一列.我上面改了一个符号就成功了
T
S
S
S
T
T
T
S
T
S
S
------解决方案--------------------
楼上各位不好意思,我的TXT文件是直接从Excel中复制过来的,字符间有表格列宽,所以读取错误。重新写TXT数据后,问题解决了。真是不好意思,非常感谢楼上各位的指导。