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

如何用VB读取以下内容


就是说我在一个text1.text里面输入以下数据前面的代号如50001之后我点查找它就把50001后面的中文件字输入到第二个text2.text里面,同理,不管我在text1.text里面输入以下=号前面的数字,都可以查找得到,并输入到text2.text里面




50001=确定后初始化平台,请注意安全!
50002=对位
50003=掩盖
50004=当前缺点文件没有原始缺点。
50005=系统未安装MSXML,请安装后再运行。
50006=缺陷点文件格式有问题。
50007=排列方式不一致,不能更新缺陷点列表信息!
50008=序号,开始,结束
50009=请给当前AOI设置有效的服务器路径。
50010=未知错误,请重启电脑,重新运行本程序。
50011=不能创建网络连接环境句柄,请重启电脑,重新运行本程序。
50012=请给当前AOI设定一个有效的类型。
50013=请正确设置各项参数。
50014=不能进入服务器缺点文件起始目录:
50015=不能取得服务器缺点文件起始目录文件列表:%s/*,错误代码为:%i
50016=请给当前AOI设置有效的资料路径。
50017=不能创建本地文件。
50018=不能取得FTP服务器上的文件。
50019=读取FTP服务器上的文件中出错。
50020=不能创建目录连接。
50021=是否所有删除掩盖范围?
50022=是否删除此掩盖范围?
50023=是否添加此掩盖范围?
50024=编号

Text2.Text = ""
    Dim StrTmp As String
    Open "f:\test.txt" For Input As #1  '请自己更改路径
    Do While Not EOF(1)
        Line Input #1, StrTmp
        If Left(StrTmp, Len(Trim(Text1.Text))) = Trim(Text1.Text) Then
            Text2.Text = Right(StrTmp, Len(StrTmp) - InStr(StrTmp, "="))
            Exit Do
        End If
    Loop
    Close #1
    If Text2.Text = "" Then
        MsgBox "没有这个代号,请重新输入", vbInformation, ""
        Text1.SetFocus
    End If
End Sub


把你上面的那些内容写入一个记事本文件中(我代码中是f:\test.txt) 假如你的索引号码并不多,比如在65536范围内。那么下列程序检索起来比较快。
这个程序的缺点是比较占内存,因为它把所有的内容都读到了内存里。
如果你确定这些编号全部都是从50000开始的,那么priCodeTitleList()不需要定义到65536个元素那么多,元素还可以更少。


Private priCodeTitleList() As String

Private Sub Form_Load()
  Dim tFile_Bytes() As Byte
  Dim tFile_Number As Integer
  Dim tFile_Lines() As String
  Dim tLine_Index As Long
  Dim tLine_Words() As String

  ReDim priCodeTitleList(65536) '假设你的编号范围从0到65536
  
  '读文本文件到tFile_Lines()数组,每个元素是一行文本。
  
  tFile_Number = FreeFile
  
  Open "Test.txt" For Binary As tFile_Number
    ReDim tFile_Bytes(LOF(tFile_Number) - 1)
    Get tFile_Number, 1, tFile_Bytes()
    tFile_Lines() = Split(StrConv(tFile_Bytes, vbUnicode), vbCrLf)
  Close tFile_Number
  
  '根据每一行前面的索引数值,映射"="号后面的内容到索引号码对应的priCodeTitleList()数组。
  '下列程序假设所有行都是合法的。对不规范的行没有容错。必须保证所有的行都是合乎规则的。
  
  For tLine_Index = 0 To UBound(tFile_Lines())
    tLine_Words() = Split(tFile_Lines(tLine_Index), "=")
    priCodeTitleList(CLng(tLine_Words(0))) = tLine_Words(1)
  Next
End Sub

Private Sub Text1_Change()
  '当Text1改变时,根据Text1的索引检索注释,返回到Text2
  Dim tTitle_Index As Long
  With Text1
    If IsNumeric(.Text) Then
      tTitle_Index = CLng(.Text)
      If tTitle_Index <= 65536 And tTitle_Index >= 0 Then
          Text2.Text = priCodeTitleList(tTitle_Index)
        Else
          Text2.Text = "索引超出范围"
      End If
    End If
  End With
End Sub
你可以用Instr函数获取“=”的位置来判断“=”号前面有多长
Len获取每一行字符串的长度
字符串总长减去等号前面的长度就等于中文字符串的长度
用Right获取后面的文字就行了
补充:VB ,  基础类
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,