Те предложили Windows API, были устаревшими в течение длительного времени, и они действительно плохо, вы видите на каждый GetPrivateProfile звонить вы читаете и разбор содержания INI все сначала ...
в качестве альтернативы попробуйте использовать мою библиотеку MadMilkman.Ini, как это:
Imports MadMilkman.Ini
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim ini As New IniFile()
ini.Load("D:\WorldInfo.ini")
Label1.Text = ini.Sections("B_Empty_IndexList").Keys("Count").Value
Label2.Text = ini.Sections("B_Use_IndecList").Keys("Count").Value
End Sub
Вы можете скачать библиотеку здесь: https://github.com/MarioZ/MadMilkman.Ini
EDIT
меня попросили разработать более обсуждение, что я имел с IInspectable в комментариях ниже.
Неопределенный: «Ваше решение не соответствует суррогатным парам."
Марио Z:„ Я понятия не имею, почему вы предполагаете, что библиотека не поддерживает Unicode, он делает и его довольно просто ... просто использовать соответствующую кодировку“
Так вот он идет, Короче говоря, .NET String представляет собой массив символов Chars, а Char представляет собой 16-битный символ. Когда он сталкивается со строкой, содержащей 32-битный символ, он будет использовать так называемую «суррогатную пару» (два символа, которые представляют один). работа с такой строкой может возникнуть, например, в том, что мы можем сделать недопустимую подстроку этой строки, если мы разрежем ее в середине этой «суррогатной пары». Еще одна проблема, которая может возникнуть при работе со строкой индексатора и не принимая во внимание, что «суррогатная пара» будет состоять из двух i ndexed в этой строке.
Однако все это не так с MadMilkman.Ini, библиотека напрямую манипулирует только определенным набором символов, в то время как остальная часть строки оставлена как есть (строка является самосогласованным типом с полным Unicode поддержка). Символы, которые ориентированы и манипулировать ими, являются [,], = и т.д.
В качестве примера здесь является написание тестового образца:
Dim textWithSurrogatePairs =
"sample content " + Char.ConvertFromUtf32(Int32.Parse("22222", NumberStyles.HexNumber))
Dim ini = New IniFile(
New IniOptions() With {.Encoding = Encoding.Unicode})
ini.Sections.Add(
New IniSection(ini, "sample section",
New IniKey(ini, "sample key", textWithSurrogatePairs)))
ini.Save("sample file.ini")
Ниже приводится содержание «textWithSurrogatePairs» переменное:
Ниже сгенерированный выходной файл "образец file.ini":
Также здесь читают тестовый образец:
Dim ini = New IniFile(
New IniOptions() With {.Encoding = Encoding.Unicode})
ini.Load("sample file.ini")
Dim readValue = ini.Sections("sample section").Keys("sample key").Value
Ниже приводится "readValue" переменный:
Таким образом, в коротких рамках .NET сам обрабатывают суррогатные пары, единственное, что нам нужно знать, это использовать подходящую кодировку (как показано выше).
К сожалению, это то, о чем не понимает IInpectable, и я не смог объяснить ему должным образом.
Черт, это плохо отформатированный код – 3dd
Если файл .ini, как указано выше, как? –
@AndrePabertiyan, я отредактировал свой ответ и поставил код внизу. –