1

アクセスして情報を読み取りたいINIファイルがあります。これは、問題のINIファイルの完全なコンテンツです:http ://www.heypasteit.com/clip/0C3Q

何人かの人々が私にコードを提案しましたが、それらは機能しません。[ ]そのINIファイルのタグが原因だと思います。タグを削除すると機能するからです。

私のプログラムには、たくさんのコンボボックス、トラックバー、チェックボックスがあります。これらの項目は、INIファイルから取得した情報で埋められます。

たとえば、iniファイルには次の行があります。

...
bCrosshairEnabled=1
bDoDepthOfField=0
bFXAAEnabled=1
uiMaxSkinnedTreesToRender=10
iSize H=720
iSize W=1280
...

bFXAAEnabled例:フォームのcheckbox8に、の値がある場合はチェックを入れ、値がある1場合はチェックを外したい0

コードがVB.NET2010と互換性があることを確認してください。

4

5 に答える 5

3

あなたはこれを試すことができます

    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
于 2012-05-18T08:59:56.260 に答える
1
'Reads each line from the text file one at a time
    For Each line As String In IO.File.ReadLines("text file path")

        'split the string by equals sign
        Dim ary As String() = line.Split("="c)

        'Check the data type of the string we collected is inline with what we are expecting, e.g. numeric
        If IsNumeric(ary(1)) Then

            'create key value pair: the string before the equals and the number after it
            'e.g.
            'key = "valuexyz" | value = "36""
            Dim valuePair As New KeyValuePair(Of String, Integer)(ary(0), CInt(ary(1)))

            'obtain the string after the equals sign
            Dim value As Integer = CInt(ary(1))

            'based on the value after the equals sign, do something
            Select Case value
                Case 1
                    ' do something using..
                    'valuePair.Key - this is the string before the equals
                    'valuePair.Value - this is the string after the equals
                Case 2
                    ' do something using..
                    'valuePair.Key - this is the string before the equals
                    'valuePair.Value - this is the string after the equals
                Case Else
                    ' do something using..
                    'valuePair.Key - this is the string before the equals
                    'valuePair.Value - this is the string after the equals
            End Select

        End If

    Next
于 2012-05-18T09:16:22.130 に答える
1

私の他の回答に対するあなたのコメントから推測される私は、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
于 2012-05-18T11:08:33.390 に答える
0

一番下のケースのステートメントでは、いずれかのevetuallityでCheckbox8.checkedプロパティをfalseに設定しています。チェックボックスをオンに設定する必要がある状況を決定し、それを行うための適切な行を記述します。

于 2012-05-18T11:00:33.337 に答える
0
    'remember to import this at the top of your class
    Imports System.IO


    Dim filename As String = "C:\file.txt"
    Dim parts() As String = Nothing

    'use a stream reader to read the file line by line
    Using sr As New StreamReader(filename)
        'read a line as split into parts at the equal sign
        parts = sr.ReadLine.Split("="c)
        'check we actually have read the data in the correct format
        If parts.Length >= 2 Then
            Select Case parts(0)
                'use a case statement for the left hand side
                Case "valuexyz"
                    'now use a case statement for the right hand side
                    Select Case parts(1).Trim
                        Case "0"
                            Foo()
                        Case "1"
                            Bar()
                    End Select

                Case "valueabc"
                    Select Case parts(1).Trim
                        Case "0"
                            Foo2()
                        Case "1"
                            Bar2()
                    End Select
            End Select
        End If
    End Using
于 2012-05-18T09:01:29.657 に答える