Программирование на Visual Basic

visual basic файл ini

   Почти все приложения Windows, сохраняют своё состояние. То есть положение окон, список документов и тому подобное. Для этого существуютдва способа: реестр или "INI" файлы(файлы инициализации). Чтобы работать с реестром Visual Basic имеет встроенные функции GetSetting и SaveSetting.
   Вы спросите: если есть реестр зачем INI-файлы. Отвечаю: попробуйте перенести часть реестра(особенно если вы не знаете какую) с одного компьютера на другой. А INI-файл - цап и неси куда хочешь. Да и изменять их легче чем реестр. В общем я за текстовые INI-файлы, и Вам их советую. А теперь за работу. Вообще работать с INI файлами через VB нельзя. Эту Возможность нам предоставляет, кто бы вы думали? Windows API.
   Для того чтобы работать с INI-файлами существуют API-Функции: GetPrivateProfileString, WritePrivateProfileString, WriteProfileString и GetProfileString. Их, конечно, можно использовать сами по себе, но для удобства мы их заключим в класс clsINI. Для этого нужно создать этот класс, и добавить внего код, который мы сейчас разберём. Для начала объявим переменные:

"Объявим 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 LongPrivate Declare Function WritePrivateProfileString _Lib "kernel32" Alias "WritePrivateProfileStringA" ( _ ByVal lpApplicationName As String, _ ByVal lpKeyName As Any, _ ByVal lpString As Any, _ ByVal lpFileName As String _) As LongPrivate Declare Function WriteProfileString _Lib "kernel32" Alias "WriteProfileStringA" ( _ ByVal lpszSection As String, _ ByVal lpszKeyName As String, _ ByVal lpszString As String _) As LongPrivate Declare Function GetProfileString _ Lib "kernel32" Alias "GetProfileStringA" ( _ ByVal lpAppName As String, _ ByVal lpKeyName As String, _ ByVal lpDefault As String, _ ByVal lpReturnedString As String, _ ByVal nSize As Long _) As Long"Переменная для хранения "имени INI-файлаPrivate sFileName As String

Теперь обработаем свойства определяющие имя файла инициализации.

"Устанавливаем свойство" ~~~~~~.INIFileName"чтениеPublic Property Get INIFileName() As StringINIFileName = sFileNameEnd Property"И записьPublic Property Let INIFileName(s_filename As String)sFileName = s_filenameEnd Property"Обработаем инициализацию классаPrivate Sub Class_Initialize()If Len(sFileName) > 0 Then "на случай если забыли задать имя sFileName = App.EXEName & ".ini""не забудьте про расширениеEnd IFEnd Sub

Теперь "обернём" API-функции в оболочку класса.

Public Sub WritePrivateINIString( _ sSection, _ sKEy As String, _ sValue As String)Dim lRes As LonglRes = WritePrivateProfileString( _ sSection, _ sKEy, _ sValue, _sFileName)End SubPublic Function GetPrivateINIString( _ sSection As String, _ sKEy As String, _ Optional sDefault As String _) As StringDim lRes As LongDim lLen As LongDim sTstr As StringsTstr = Space$(512)lRes = GetPrivateProfileString( _ sSection, _ sKEy, _ sDefault, _ sTstr, _ Len(sTstr), _ sFileName)If lRes > 0 ThensTstr = Left$(sTstr, lRes)End IfGetPrivateINIString = sTstrEnd FunctionPublic Sub WriteWinINIString( _ sSection As String, _ sKEy As String, _ sValue As String)Dim lRes As LonglRes = WriteProfileString( _ sSection, _ sKEy, _ sValue)End SubPublic Function GetWinINIString( _ sSection, _ sKEy, _ Optional sDefault As String _) As StringDim lRes As LongDim lTlen As LongDim sTstr As StringsTstr = Space$(512)lRes = GetProfileString( _ sSection, _ sKEy, _ sDefault, _ sTstr, _ Len(sTstr))If lRes > 0 ThensTstr = Left$(sTstr, lRes)End IfGetWinINIString = sTstrEnd Function

Вот и всё, добавлю. что весь этот код я скопировал прямо из VB-редактора, так, чтоон должен работать. Если что уберите лишние подчёркивания.

Hosted by uCoz