如何用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=编号
把你上面的那些内容写入一个记事本文件中(我代码中是f:\test.txt) 假如你的索引号码并不多,比如在65536范围内。那么下列程序检索起来比较快。
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
这个程序的缺点是比较占内存,因为它把所有的内容都读到了内存里。
如果你确定这些编号全部都是从50000开始的,那么priCodeTitleList()不需要定义到65536个元素那么多,元素还可以更少。
你可以用Instr函数获取“=”的位置来判断“=”号前面有多长
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
Len获取每一行字符串的长度
字符串总长减去等号前面的长度就等于中文字符串的长度
用Right获取后面的文字就行了
补充:VB , 基础类