Ограничения : нет анализа на корректное имя и на существование INI-файла
Private dll_kernel32
Private lib_kernel32
Private SZ_STR_LPSTR_DLL
Private lp_NameFile
' Иницализация для работы с KERNEL32
Sub Init_KERNEL_32
' Defines the dll type
Set dll_kernel32 = DLL.DefineDLL("KERNEL32")
' Loads the dll.
Set lib_kernel32 = DLL.Load("KERNEL32")
SZ_STR_LPSTR_DLL = 32768 ' длина LPTSTR
' определение ф-ций работы с INI-файлами
dll_kernel32.DefineProc "GetPrivateProfileStringA", vt_lpstr, vt_lpstr, vt_lpstr, vt_lpstr, vt_i4, vt_lpstr, vt_i4
dll_kernel32.DefineProc "WritePrivateProfileStringA", vt_lpstr, vt_lpstr, vt_lpstr, vt_lpstr, vt_i4
End Sub
' Иницализация INI-файла
Sub Init_INI (NameIniFile)
Set lp_NameFile = DLL.New("LPSTR", SZ_STR_LPSTR_DLL)
lp_NameFile.Text = NameIniFile
End Sub
' Чтение параметра из INI-файла
' Section - секция
' Parameter - параметр
' val_Default - значение оп умолчанию (возвращается, если нет параметра)
' Возврат : значение параметра (если чтение успешное) или val_Default (если чтение безуспешное)
Function ReadIniFile (Section, Parameter, val_Default)
Dim lp_Section, lp_Parameter, lp_Default, lp_ReturnedString, res
Set lp_Section = DLL.New("LPSTR", SZ_STR_LPSTR_DLL)
lp_Section.Text = Section
Set lp_Parameter = DLL.New("LPSTR", SZ_STR_LPSTR_DLL)
lp_Parameter.Text = Parameter
Set lp_Default = DLL.New("LPSTR", SZ_STR_LPSTR_DLL)
lp_Default.Text = val_Default
Set lp_ReturnedString = DLL.New("LPSTR", SZ_STR_LPSTR_DLL)
res = lib_kernel32.GetPrivateProfileStringA(lp_Section, lp_Parameter, lp_Default, lp_ReturnedString, SZ_STR_LPSTR_DLL, lp_NameFile)
ReadIniFile = lp_ReturnedString.Text
End Function
' Запись value в INI-файл
' Section - секция
' Parameter - параметр
' value - значение
Sub WriteIniFile (Section, Parameter, value)
Dim lp_Section, lp_Parameter, lp_value, res
Set lp_Section = DLL.New("LPSTR", SZ_STR_LPSTR_DLL)
lp_Section.Text = Section
Set lp_Parameter = DLL.New("LPSTR", SZ_STR_LPSTR_DLL)
lp_Parameter.Text = Parameter
Set lp_value = DLL.New("LPSTR", SZ_STR_LPSTR_DLL)
lp_value.Text = value
res = lib_kernel32.WritePrivateProfileStringA(lp_Section, lp_Parameter, lp_value, lp_NameFile)
End subА вот пример использования функций
Sub CallRoutineFromDLL
' Иницация работы с DLL
Init_KERNEL_32
Init_INI ("c:\a.ini")
s_par = ReadIniFile ("q", "z", "ERROR")
WriteIniFile "qq", "zz", "1234"
End sub


