Ограничения : нет анализа на корректное имя и на существование 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