Программирование
Веб программирование

Чтение ini файлов из VB

 
 

Для чтения файлов есть API GetPrivateProfileString, сейчас мы сделаем программу, которая при загрузке перемещает форму на то значение, которое указанно в файле set.ini, в разделе Setup, переменной Left. Код:

'Объявляем 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 Sub Form_Load()
Dim Htenie
Dim z As String
z = Space(255) ' Выделяем место в памяти из 255 пробелов(можно написать так z="255 раз нажми на пробел(хотя можно и меньше(я вписал 255 т.к. это 1 строчка))"), для записи(см. ниже) значения читаемой переменной
Htenie = GetPrivateProfileString("Setup", "Left", "no", z, 255, App.Path & "/set.ini") ' Считываем из ключа Setup, значение переменной Left. Я написал слово "no"(можно вписать любое), это слово нам потом пригодится(если ключа/переменной нет, то z будет равно слову no). 
z = Left(z, Htenie) ' убираем все ненужные символы с правой стороны у строки, чтобы получить настоящее значение.
If z = "no" Then 
MsgBox "Такого раздела/переменной не существует" ' Если ключа/переменной нет, то сообщем об этом
Else
Form1.Left = val(z) ' Ставим форму на то место, которое указано в файле ini. (в разделе Setup переменной Left)
End If
End Sub 

Исходник ищи Здесь


Есть вопросы? Спроси на нашем форуме!!
Марк [25.05.2010 15:03]

Извините, а возможно ли сделат тоже самое с Top? Просто почему-то выходит ошибка в этом месте: m = Top(m, tenie)

alex13sh300 [24.07.2013 13:27]

тут чутку другая логика)) Left - это функция , не как не относиться к свойству формы)) и значит нет смысла её заменять на Top

BondOs20 [09.03.2014 02:34]

Чёто не пашет!

Stertor370 [09.03.2014 13:44]

Не пашет, потому, что неправильно вызывается API. Кроме того, когда в коде многократно вызывается 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

Function ReadIni(filename As String, sectionname As String, keyname As String, default As Variant) As Variant
Dim buff As String
Dim bufflen As Integer
Dim nbufflen As Integer
bufflen = 16384
buff = String(bufflen, Chr(0))
nbufflen = GetPrivateProfileString(sectionname, keyname, default, buff, bufflen, filename)
ReadIni = Left$(buff, nbufflen)
End Function


Private Sub Command1_Click()
MsgBox ReadIni("C:autorun.inf", "autorun", "shellexecute", "")
End Sub

Декларируемые API нельзя помещать в модуле формы, они должны быть вынесены в отдельный модуль.

BondOs20 [09.03.2014 20:25]

Stertor , Чёто и с твоим кодом тоже не непашет!!
Может я просто чёто нетак делаю!



Оставлять комментарии можно только зарегистрированным




Предупреждение: Вся информация представлена исключительно в образовательных целях.
Ни авторы, ни администрация не несут ответственности в случае ее использования в противозаконных целях.