TopPicLogo TopPicText

Настройки - Работа с INI файлом

Создаём , пишем и читaем INI файл в формате:
[Имя раздела]
Название параметра = Значение параметра


Пример использования:

Private Sub INITest()
'Пишем: Назв_Параметра , Знач_Параметра, Назв_Наздела
    INIWrite "Путь к БАЗЕ", CurrentProject.Path, "Настройка Приложения"
'Читаем: Назв_Параметра, Знач_Параметра_по_Умолчанию, Назв_Наздела
    MsgBox INIRead("Путь к БАЗЕ", "НЕ ЗНАЮ!", "Настройка Приложения")
End Sub

Сам модуль:

'--------------------------------------------------------------------
' Module    : modINI
' Author    : es
' Date      : 07.01.2004
' Purpose   : Модуль Записи - Чтения INI файла локальных настроек приложения
'             Файл создаётся в папке приложения  - автоматом
'--------------------------------------------------------------------
Option Compare Database
Option Explicit

'Сразу задаём название файла !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Private Const INIFileName As String = "My Application.ini"
'--------------------------------------------------------------------

'Декларация API ......
Private Declare Function GetPrivateProfileString Lib "kernel32" _
    Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, _
    ByVal lpKeyName As Any, ByVal lpDefault As String, _
    ByVal lpReturnedString As String, ByVal nSize As Long, _
    ByVal lpFileName As String) As Long
Private Declare Function WritePrivateProfileString Lib "kernel32" _
    Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, _
    ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long
'--------------------------------------------------------------------

Public Sub INIWrite(sName As String, ByVal sValue As String, Optional sPart As String = "Settings")
'Запись данных в INI файл - аргументы:
'   sName  = Название параметра
'   sValue = Значение параметра
'   sPart  = Название раздела
'--------------------------------------------------------------------
Dim filePath As String
Dim intRet As Integer
On Error GoTo INIWriteErr
'Получаем путь ....
    filePath = CurrentProject.Path & "\" & INIFileName
'Пишем значения
    intRet = WritePrivateProfileString(sPart, sName, sValue, filePath)
'Проверка результата записи
    If intRet <> 1 Then 'Неудачное завершение
        MsgBox "Процедура INIWrite не смогла записать параметр INI Файла:" & vbCrLf & _
        filePath & vbCrLf & _
        "-----------------------------------------------------------------" & vbCrLf & _
        "[" & sPart & "]" & vbCrLf & sName & "=" & sValue
    End If
    Exit Sub
INIWriteErr:
    MsgBox "Процедура INIWrite привела к ошибке:" & vbCrLf & _
    "#" & Err.Number & " " & Err.Description, vbCritical
End Sub


Public Function INIRead(sName As String, Optional sDefaultValue As String = "", Optional sPart As String = "Settings") As String
'Чтение данных из файла INI - с возможностью записи значения по умолчанию где аргументы:
'   sName          = Название параметра
'   sDefaultValue  = Значение по умолчанию (на случай его отсутствия)
'   sPart          = Название раздела
'--------------------------------------------------------------------
'Значение возвращаемое функцией GetPrivateProfileString если искомое значение параметра не найдено
Const strNoValue As String = ""
Dim filePath As String   'Путь к INI файлу
Dim intRet As Integer    'Длина возвращаемой строки (функцией GetPrivateProfileString)
Dim strRet As String     'Возвращаемая строка
On Error GoTo INIReadErr
'Получаем путь ....
    filePath = CurrentProject.Path & "\" & INIFileName

'Получаем значение из файла - если его нет будет возвращен 3й аргумент = strNoValue
    strRet = String(255, Chr(0))
    intRet = GetPrivateProfileString(sPart, sName, strNoValue, strRet, 255, filePath)
    strRet = Left$(strRet, intRet)

'Определяем было найдено значение или нет (если возвращено знач. константы strNoValue то = НЕТ)
    If strRet = strNoValue Then            'Значение не было найдено
        If sDefaultValue <> "" Then               'Если знач по умолчанию задано
            INIWrite sName, sDefaultValue, sPart  'Записываем заданное аргументом DefVal значение по умолчанию
            strRet = sDefaultValue                'и возвращаем его же
        End If
    End If
'Возвращаем найденное
    INIRead = strRet
    Exit Function
INIReadErr:
    MsgBox "Функция INIRead привела к ошибке:" & vbCrLf & _
    "#" & Err.Number & " " & Err.Description, vbCritical
End Function

Назад ToTop
L.E. 19.01.2013
Рейтинг@Mail.ru