首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

txt读取数据有关问题

2012-04-09 
txt读取数据问题各位,我是VB新手,属于什么都不行。现在对从txt中读取数据并显示存在一定的困扰,请各位大侠

txt读取数据问题
各位,我是VB新手,属于什么都不行。现在对从txt中读取数据并显示存在一定的困扰,请各位大侠帮忙,非常感谢!
问题如下:
txt文档数据格式非常有规律
S20120119 132559 070.19D
S20120119 132609 000.03D
S20120119 132619 000.02D
S20120119 132629 000.02D
。。。
数据内容很多行且为不定维数。
想将每行的除S外前8为即“20120119” 提取并放入数组MDate()独,每行的“132559”提取放入数组MTime(),
每行的“070.19”放入数组Data1()中。
最后将MDate MTime Data1放入不同的Text.text中。
我的程序:

Public Sub CmdRead_Click()
  Dim TextString As String
  Dim StrArray() As String
  Dim i As Long
  i = 0
  Open "C:\Documents and Settings\Administrator\桌面\123.txt" For Input As #1 ' 打开文件。
  Do While Not EOF(1) ' 循环至文件尾。
  Line Input #1, TextString ' 读入一行数据并将其赋予某变量。
  StrArray = Split(TextString, " ")
  Text1(0).Text = StrArray(0)
  Text1(1).Text = StrArray(1)
  Text1(2).Text = StrArray(2)
  i = i + 1
  Loop
  Close #1 ' 关闭文件。
End Sub

各位帮忙指点下一下几个困扰:
1:为何调试结果只显示txt文档中最后一行数据
2:我如何去除没行的S和D
3:我怎么实现在对应的text中显示相应提取的信息
请各位高手解答下!

[解决办法]

VB code
Private Sub Command1_Click()Text1(0).MultiLine = TrueText1(1).MultiLine = TrueText1(2).MultiLine = TrueEnd SubPublic Sub CmdRead_Click()  Dim MDate() As String  Dim MTime() As String  Dim Data1() As String  Dim StrArray() As String  Dim i As Long  i = 0  Open "D:\123.txt" For Input As #1 ' 打开文件。  Do While Not EOF(1) ' 循环至文件尾。  Line Input #1, TextString ' 读入一行数据并将其赋予某变量。  StrArray = Split(TextString, " ")  ReDim Preserve MDate(i), MTime(i), Data1(i)  MDate(i) = Mid(StrArray(0), 2)  MTime(i) = StrArray(1)  Data1(i) = Val(StrArray(2))  i = i + 1  Loop    Close #1 ' 关闭文件。  Text1(0).Text = Join(MDate)  Text1(1).Text = Join(MTime)  Text1(2).Text = Join(Data1)End Sub
[解决办法]
1,循环过程中,每行都有经过显示的逻辑,循环结束后,肯定只有显示最后一行,如果循环中加入断点,则可以看到每行的数据。
2,
使用下列语句去除每行头尾的的s和d
if left(TextString,1)="S" then TextString=mid(TextString,2)
if right(TextString,1)="D" then TextString=left(TextString,len(TextString)-1)

3,
显然,这个使用中使用textbox控件不是很合适的,如果确实要用textbox,则应该使用动态加载,为每行的数据创建一组TextBox控件,用于分别显示每一行

建议使用MSHFlexGrid控件,则可以为每个数据行提供一显示行

[解决办法]
?CDate(Format("20120207","####-##-##"))
2012-02-07 
?CDate(Format("143758","##:##:##"))
14:37:58 

[解决办法]
探讨

MSHFlexGrid控件?我没用过可以试试。
chinaboyzyq给的输出格式是完成了对齐的要求,但是把数值的零自动去除掉了比如0.05变成.05,这样是定义的数值类型不对引起的吧?,还有我怎么把前两列的数据转换成日期格式,为什么我用CDate不能实现呢?提示数据类型不匹配,请帮忙回答下!

热点排行