当前位置:编程学习 > VB >>

请教:VB读取.txt数据的问题

要读取c:\a.txt 文件 内的数据文件 数据文件不大 百行之内
大致内容为:
aaaa 
111 222 333=   '数据1 以等号结束
444 555 666 777   '数据2 
888= '数据文件2 以等号结束
bbbb

一行行的读取到tline
用split函数 将每一行数据读取到str()数组
通过对str(0) 判断是否为需要的数据 再判断right$(str(UBound(str)),1)="="
看数据读取是否到尾
这儿样能对数据1 读取 对数据2样式的就没有办法了 
请教高手
程序如下
Open fname For Input As #1   ' 打开文件。
Do While Not EOF(1)   ' 循环至文件尾。

     Line Input #1, fline   ' 读入一行数据并将其赋予fline变量。
     Form1.Print fline   ' 为了测试 在窗口中显示数据。到这里都还正常
     str = Split(str1, " ", -1, 1) ’空格为分隔符 读取全部字符串
     
     If str(0) = "111" then ’这里就不对了 提示 错误 9下标越界
     Print str(0)
     End If --------------------编程问答-------------------- 看你的str()定义,是str(a),还是str(1 to 100) --------------------编程问答-------------------- Open fname For Input As #1  ' 打开文件。 
Do While Not EOF(1)  ' 循环至文件尾。 

    Line Input #1, fline  ' 读入一行数据并将其赋予fline变量。 
    Form1.Print fline  ' 为了测试 在窗口中显示数据。到这里都还正常 
    str = Split(str1, " ", -1, 1) ’空格为分隔符 读取全部字符串 
    
    If str(0) = "111" then ’这里就不对了 提示 错误 9下标越界 
    Print str(0) 
    End If --------------------编程问答-------------------- Open fname For Input As #1  ' 打开文件。 
Do While Not EOF(1)  ' 循环至文件尾。 

    Line Input #1, fline  ' 读入一行数据并将其赋予fline变量。 
    Form1.Print fline  ' 为了测试 在窗口中显示数据。到这里都还正常 
    str = Split(fline, " ", -1, 1) ’空格为分隔符 读取全部字符串 
    
    If str(0) = "111" then ’这里就不对了 提示 错误 9下标越界 
    Print str(0) 
    End If --------------------编程问答-------------------- Private Sub Command1_Click()
Dim Str() As String
Open "c:\a.txt" For Input As #1  ' 打开文件。
Do While Not EOF(1)  ' 循环至文件尾。

    Line Input #1, fline  ' 读入一行数据并将其赋予fline变量。
    'Form1.Print fline  ' 为了测试 在窗口中显示数据。到这里都还正常
    Str = Split(fline, " ", -1, 1) '空格为分隔符 读取全部字符串
    
    If Str(0) = "111" Then '这里就不对了 提示 错误 9下标越界
       Print Str(0)
    End If --------------------编程问答-------------------- up --------------------编程问答-------------------- up --------------------编程问答-------------------- Open fname For Input As #1  ' 打开文件。 
Do Until EOF(1)  ' 循环至文件尾。 

    Line Input #1, fline  ' 读入一行数据并将其赋予fline变量。 
    Form1.Print fline  ' 为了测试 在窗口中显示数据。到这里都还正常 
    If (left(fline, 3) = "111") And (Right(fline, 1) = "=") Then 
        str = Split(fline, " ") ’空格为分隔符 读取全部字符串 
        Print str(0)
    End If

Loop
Close #1 --------------------编程问答--------------------
Open fname For Input As #1  ' 打开文件。
Do While Not EOF(1)  ' 循环至文件尾。

    Line Input #1, fline  ' 读入一行数据并将其赋予fline变量。
    Form1.Print fline  ' 为了测试 在窗口中显示数据。到这里都还正常
    str = Split(str1, " ", -1, 1) ’空格为分隔符 读取全部字符串
    if ubound(str)>-1 then'ubound(str)=-1,如果str1=“888=”
       If str(0) = "111" then ’这里就不对了 提示 错误 9下标越界
       Print str(0)
   end if
End If


--------------------编程问答-------------------- 是否需要在读str(0)之前对str()进行ReDim Preserve呢? --------------------编程问答-------------------- Option Explicit
Dim i&, aa$, TmpStr$(), S

Private Sub Form_Load()
   Open "c:\a.txt" For Input As #1
   aa = StrConv(InputB(LOF(1), 1), vbUnicode)
   Close #1
End Sub

Private Sub Command1_Click()
   S = Split(aa, vbNewLine)
   ReDim Preserve TmpStr$(UBound(S))
   Me.Cls
   For i = 0 To UBound(S)
      TmpStr(i) = S(i)
      'Print TmpStr(i) '显示全部数据
      '想怎么判断条件自己加
      If Right(TmpStr(i), 1) = "=" Then Print TmpStr(i)
   Next i
End Sub

--------------------编程问答-------------------- 圣诞快乐,借宝地要点回复分好发个问题,谢谢 --------------------编程问答-------------------- 啊?10 楼 cbm666  不是百度贴吧的吧主么? 哇哈哈,回答你的问题,你太幸运了,唉,我的问题还没有足够的分来问呢。。。 --------------------编程问答-------------------- 哈哈啥问题?就在这里发出来看看吧 --------------------编程问答-------------------- 还是没看明白,不懂 --------------------编程问答--------------------
引用 7 楼 of123 的回复:
Open fname For Input As #1  ' 打开文件。
 Do Until EOF(1)  ' 循环至文件尾。

     Line Input #1, fline  ' 读入一行数据并将其赋予fline变量。
     Form1.Print fline  ' 为了测试 在窗口中显示数据。到这里都还正常
     If (left(fline, 3) = "111") And (Right(fline, 1) = "=") Then
         str = Split(fline, " ") ’空格为分隔符 读取全部字符串
         Print str(0)
     End If

 Loop
 Close #1

兄弟这头像不错啊! --------------------编程问答-------------------- 好像,如果先判断没有'='的加上'='是否会更好处理呢? --------------------编程问答-------------------- up --------------------编程问答-------------------- 只顶 --------------------编程问答-------------------- up
补充:VB ,  基础类
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,