如果我有一个包含以下信息的文本文件,那么搜索版本的最佳方法是什么,例如仅在 system1 上?(在 vb6 代码中,我可以使用InStr
吗?)
[系统1] 版本=xx 日期=xx [系统2] 版本=xx 日期=xx
如果我有一个包含以下信息的文本文件,那么搜索版本的最佳方法是什么,例如仅在 system1 上?(在 vb6 代码中,我可以使用InStr
吗?)
[系统1] 版本=xx 日期=xx [系统2] 版本=xx 日期=xx
示例文件看起来像一个标准的 INI 文件。您可以使用GetPrivateProfileString()
和 相关功能阅读这些内容。您还可以使用GetPrivateProfileSectionNames()
和枚举部分和值GetPrivateProfileSection()
。
假设版本之后和日期之前有一个空格(str 将是您的文本):
Dim version As String
version = Mid(str, InStr(str, "version") + 8)
version = Mid(version, 1, InStr(version, " "))
但是有很多函数可以解析 .ini 文件。
我创建了一个文本文件"C:\MYFILE.TXT"
,这是文件的内容:
[system1]
version=aa
date=bb
[system2]
version=yy
date=zz
[system3]
date=4
[system4]
[system5]
正如你所看到的,我做了所有可能的情况,即。一个有版本信息的系统,一个没有版本信息的系统,等等。然后我写了这段代码:
这是在分类列表下查找值的一种方法:
Dim mySystem As String
Dim myVersion As String
mySystem = "[system2]" 'Replace this with the system you are looking for
Dim strTmp As String
Dim SystemFound As Boolean
Dim VersionFound As Boolean
Open "c:\myfilename.txt" For Input As #1
Do While Not EOF(1)
Line Input #1, strTmp
If InStr(UCase(strTmp), UCase(mySystem)) > 0 Then
SystemFound = True
strTmp = ""
Do While Not EOF(1) And InStr(strTmp, "[") = 0
Line Input #1, strTmp
If InStr(UCase(strTmp), "VERSION") > 0 Then
VersionFound = True
myVersion = Mid(strTmp, InStr(strTmp, "=") + 1, Len(strTmp))
End If
Loop
Exit Do
End If
Loop
Close #1
If SystemFound And VersionFound Then
MsgBox "The Version of " & mySystem & " is " & myVersion
ElseIf SystemFound And Not VersionFound Then
MsgBox "The system " & mySystem & " has no version definition"
ElseIf SystemFound = False Then
MsgBox "The system " & mySystem & " is not found in file"
End If