cyrax
6 years ago
5 changed files with 187 additions and 12 deletions
@ -0,0 +1,98 @@ |
|||
Imports System.IO |
|||
Imports System.Runtime.InteropServices |
|||
Imports System.Text |
|||
|
|||
Namespace Ini |
|||
Public Class IniFile |
|||
#Region "DLL Import" |
|||
''' <summary> |
|||
''' Записывает ключ в заданный раздел INI-файла. |
|||
''' </summary> |
|||
''' <param name="section">Имя раздела.</param> |
|||
''' <param name="key">Имя ключа.</param> |
|||
''' <param name="value">Значение ключа.</param> |
|||
''' <param name="filePath">Путь к INI-файлу.</param> |
|||
<DllImport("kernel32")> |
|||
Private Shared Function WritePrivateProfileString(ByVal section As String, ByVal key As String, ByVal value As String, ByVal filePath As String) As Long |
|||
End Function |
|||
|
|||
''' <summary> |
|||
''' Считывает ключ заданного раздела INI-файла. |
|||
''' </summary> |
|||
''' <param name="section">Имя раздела.</param> |
|||
''' <param name="key">Имя ключа.</param> |
|||
''' <param name="[default]"></param> |
|||
''' <param name="retVal"></param> |
|||
''' <param name="size"></param> |
|||
''' <param name="filePath">Путь к INI-файлу.</param> |
|||
''' <remarks>С помощью конструктора записываем путь до файла и его имя. </remarks> |
|||
<DllImport("kernel32")> |
|||
Private Shared Function GetPrivateProfileString(ByVal section As String, ByVal key As String, ByVal [default] As String, ByVal retVal As StringBuilder, ByVal size As Integer, ByVal filePath As String) As Integer |
|||
End Function |
|||
#End Region '/DLL Import |
|||
|
|||
#Region "Constructor" |
|||
''' <summary> |
|||
''' Имя файла. |
|||
''' </summary> |
|||
Private IniPath As String |
|||
|
|||
''' <summary> |
|||
''' Читаем ini-файл и возвращаем значение указного ключа из заданной секции. |
|||
''' </summary> |
|||
''' <param name="iniPath"></param> |
|||
Public Sub New(ByVal iniPath As String) |
|||
Me.IniPath = New FileInfo(iniPath).FullName.ToString |
|||
End Sub |
|||
#End Region |
|||
|
|||
#Region "INI-file Methods" |
|||
''' <summary> |
|||
''' Проверяет, что заданный ключ существует в INI-файле. |
|||
''' </summary> |
|||
''' <param name="section">Имя раздела.</param> |
|||
''' <param name="key">Имя ключа.</param> |
|||
Public Function KeyExists(ByVal section As String, ByVal key As String) As Boolean |
|||
Return (Me.ReadKey(section, key).Length > 0) |
|||
End Function |
|||
|
|||
''' <summary> |
|||
''' Читает значение заданного ключа в заданном разделе INI-файла. |
|||
''' </summary> |
|||
''' <param name="section">Имя раздела.</param> |
|||
''' <param name="key">Имя ключа.</param> |
|||
Public Function ReadKey(ByVal section As String, ByVal key As String) As String |
|||
Dim retVal As New StringBuilder(&HFF) |
|||
IniFile.GetPrivateProfileString(section, key, "", retVal, &HFF, Me.IniPath) |
|||
Return retVal.ToString() |
|||
End Function |
|||
|
|||
''' <summary> |
|||
''' Создаёт заданный ключ в заданном разделе. Если раздел не существует, он будет создан. |
|||
''' </summary> |
|||
''' <param name="section">Имя раздела.</param> |
|||
''' <param name="key">Имя ключа.</param> |
|||
''' <param name="value">Значение ключа. Если NULL, то ключ будет удалён. Если String.Empty, то присвоится пустое значение.</param> |
|||
Public Sub WriteKey(ByVal section As String, ByVal key As String, ByVal value As String) |
|||
IniFile.WritePrivateProfileString(section, key, value, Me.IniPath) |
|||
End Sub |
|||
|
|||
''' <summary> |
|||
''' Удаляет заданный ключ из заданного раздела INI-файла. |
|||
''' </summary> |
|||
''' <param name="section">Имя раздела.</param> |
|||
''' <param name="key">Имя ключа.</param> |
|||
Public Sub DeleteKey(ByVal section As String, ByVal key As String) |
|||
Me.WriteKey(section, key, Nothing) |
|||
End Sub |
|||
|
|||
''' <summary> |
|||
''' Удаляет заданный раздел INI-файла. |
|||
''' </summary> |
|||
''' <param name="section">Имя раздела.</param> |
|||
Public Sub DeleteSection(ByVal section As String) |
|||
Me.WriteKey(section, Nothing, Nothing) |
|||
End Sub |
|||
#End Region |
|||
End Class |
|||
End Namespace |
Reference in new issue