使用vb.net 2010在文本文件中搜索特定字符串

使用vb.net 2010在文本文件中搜索特定字符串,vb.net,ini,Vb.net,Ini,我想访问一个INI文件并从中读取信息。这是有关INI文件的完整内容: 有几个人建议我使用代码,但它们不起作用。我相信这是因为INI文件中有[]标记。因为如果我移除标签,它们就可以工作 我的程序有一堆组合框、轨迹栏和复选框。这些项目将由INI文件中的信息填充 例如,ini文件有这些行 ... bCrosshairEnabled=1 bDoDepthOfField=0 bFXAAEnabled=1 uiMaxSkinnedTreesToRender=10 iSize H=720 iSize W=12

我想访问一个INI文件并从中读取信息。这是有关INI文件的完整内容:

有几个人建议我使用代码,但它们不起作用。我相信这是因为INI文件中有
[]
标记。因为如果我移除标签,它们就可以工作

我的程序有一堆组合框、轨迹栏和复选框。这些项目将由INI文件中的信息填充

例如,ini文件有这些行

...
bCrosshairEnabled=1
bDoDepthOfField=0
bFXAAEnabled=1
uiMaxSkinnedTreesToRender=10
iSize H=720
iSize W=1280
...
示例:如果
bFXAAEnabled
的值为
1
,我希望检查表单中的复选框8,如果值为
0
,则取消选中复选框8

请确保您的代码与VB.NET 2010兼容。

您可以试试这个

    Dim myvalue As Integer
    For Each k As String In IO.File.ReadLines("d:\test.txt")
        If k.Contains("valueccc=") Then
            Dim values() As String = k.Split(CChar("=")).ToArray
            myvalue = Convert.ToInt32(values(1))
        End If
    Next
Select case myvalue
case 1
case 2
End select
你可以试试这个

    Dim myvalue As Integer
    For Each k As String In IO.File.ReadLines("d:\test.txt")
        If k.Contains("valueccc=") Then
            Dim values() As String = k.Split(CChar("=")).ToArray
            myvalue = Convert.ToInt32(values(1))
        End If
    Next
Select case myvalue
case 1
case 2
End select

在bottom case语句中,您正在将Checkbox8.checked属性设置为false。决定在哪种情况下需要将复选框设置为选中状态,并写下相应的行来执行此操作。

在底格语句中,您正在将Checkbox8.checked属性设置为false。决定在哪种情况下需要将复选框设置为选中状态,并写出相应的行来执行此操作。

根据您对我的其他答案的评论推断,我正在发布一个关于如何从INI文件读取值的新答案:

Imports System.Text
Imports System.Runtime.InteropServices

Public Class TestForm
    'declare the API
    <DllImport("kernel32.dll", SetLastError:=True)> _
    Private Shared Function GetPrivateProfileString(ByVal lpAppName As String, _
                        ByVal lpKeyName As String, _
                        ByVal lpDefault As String, _
                        ByVal lpReturnedString As StringBuilder, _
                        ByVal nSize As Integer, _
                        ByVal lpFileName As String) As Integer
    End Function

    'Function to retrieve a value from an INI file
    Public Function GetINIValue(filename As String, section As String, key As String, Optional defaultValue As String = "") As String
        Dim res As Integer
        Dim sb As New StringBuilder(500)
        res = GetPrivateProfileString(section, key, "", sb, sb.Capacity, filename)
        If res = 1 Then Return sb.ToString Else Return defaultValue
    End Function

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Dim filename As String = "C:\Scratch\Test.ini"
        CheckBox1.Checked = If(GetINIValue(filename, "Display", "bFXAAEnabled") = "1", True, False)
    End Sub

End Class
导入系统文本
导入System.Runtime.InteropServices
公共类测试表单
'声明API
_
私有共享函数GetPrivateProfileString(ByVal lpAppName作为字符串_
ByVal lpKeyName作为字符串_
ByVal默认为字符串_
ByVal lpReturnedString作为StringBuilder_
ByVal nSize为整数_
ByVal lpFileName(作为字符串)作为整数
端函数
'函数从INI文件中检索值
公共函数GetINIValue(文件名为字符串,节为字符串,键为字符串,可选defaultValue为字符串=”)为字符串
Dim res作为整数
将某人定为新的StringBuilder(500)
res=GetPrivateProfileString(节,键“”,sb,sb.容量,文件名)
如果res=1,则返回sb.ToString,否则返回defaultValue
端函数
私有子按钮1\u单击(发送者作为System.Object,e作为System.EventArgs)处理按钮1。单击
Dim文件名为String=“C:\Scratch\Test.ini”
CheckBox1.Checked=If(GetINIValue(文件名,“显示”,“bFXAAEnabled”)=“1”,True,False)
端接头
末级

根据您对我的另一个答案的评论推断,我发布了一个关于如何从INI文件读取值的新答案:

Imports System.Text
Imports System.Runtime.InteropServices

Public Class TestForm
    'declare the API
    <DllImport("kernel32.dll", SetLastError:=True)> _
    Private Shared Function GetPrivateProfileString(ByVal lpAppName As String, _
                        ByVal lpKeyName As String, _
                        ByVal lpDefault As String, _
                        ByVal lpReturnedString As StringBuilder, _
                        ByVal nSize As Integer, _
                        ByVal lpFileName As String) As Integer
    End Function

    'Function to retrieve a value from an INI file
    Public Function GetINIValue(filename As String, section As String, key As String, Optional defaultValue As String = "") As String
        Dim res As Integer
        Dim sb As New StringBuilder(500)
        res = GetPrivateProfileString(section, key, "", sb, sb.Capacity, filename)
        If res = 1 Then Return sb.ToString Else Return defaultValue
    End Function

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Dim filename As String = "C:\Scratch\Test.ini"
        CheckBox1.Checked = If(GetINIValue(filename, "Display", "bFXAAEnabled") = "1", True, False)
    End Sub

End Class
导入系统文本
导入System.Runtime.InteropServices
公共类测试表单
'声明API
_
私有共享函数GetPrivateProfileString(ByVal lpAppName作为字符串_
ByVal lpKeyName作为字符串_
ByVal默认为字符串_
ByVal lpReturnedString作为StringBuilder_
ByVal nSize为整数_
ByVal lpFileName(作为字符串)作为整数
端函数
'函数从INI文件中检索值
公共函数GetINIValue(文件名为字符串,节为字符串,键为字符串,可选defaultValue为字符串=”)为字符串
Dim res作为整数
将某人定为新的StringBuilder(500)
res=GetPrivateProfileString(节,键“”,sb,sb.容量,文件名)
如果res=1,则返回sb.ToString,否则返回defaultValue
端函数
私有子按钮1\u单击(发送者作为System.Object,e作为System.EventArgs)处理按钮1。单击
Dim文件名为String=“C:\Scratch\Test.ini”
CheckBox1.Checked=If(GetINIValue(文件名,“显示”,“bFXAAEnabled”)=“1”,True,False)
端接头
末级


使用选项Strict On时,这将无法编译!经过编辑,它现在应该能够支持严格的。谢谢。请重试,有。ToArray。这是我收到的错误消息:“ToArray”不是“System.Array”的成员。我使用VB.NET 2010Plus,没有“ReadLines”,而是“ReadAllLines”。。。我不知道发生了什么事。我认为VB.NET 2010与您的代码不兼容。这将无法使用选项严格编译!经过编辑,它现在应该能够支持严格的。谢谢。请重试,有。ToArray。这是我收到的错误消息:“ToArray”不是“System.Array”的成员。我使用VB.NET 2010Plus,没有“ReadLines”,而是“ReadAllLines”。。。我不知道发生了什么事。我认为VB.NET 2010与您的代码不兼容。但我如何知道该数字是valuexyz还是valueabc?@ğağan您不是这么问的。提高你的问题的质量,你会得到更多有用的答案……当你从纯文本文件中阅读时,你的代码工作得很好。但当阅读以下内容时,它将不起作用:。我认为原因是文件中的“[]”标记。我怎样才能克服这个问题?但我怎么知道这个数字是valuexyz还是valueabc?@ğağan你不是这么问的。提高你的问题的质量,你会得到更多有用的答案……当你从纯文本文件中阅读时,你的代码工作得很好。但当阅读以下内容时,它将不起作用:。我认为原因是文件中的“[]”标记。我怎样才能克服这个问题?运气不好你能告诉我怎么了吗?你收到错误消息了吗?没有,我没有收到任何错误。问题是,代码没有任何作用。让我向您展示我的VB.net代码屏幕:我正在制作的这个程序需要读取Skyrim的选项,这是一款视频游戏(它将其设置存储在一个.ini文件中),然后程序必须在复选框中反映这些设置。如果该ini文件中的值设置为“1”,则我的程序需要读取该值并将复选框的选中状态设置为“true”。编写代码后,无论该值在.ini文件中设置为“1”还是“0”,复选框始终保持未选中状态