Шаг 51 - Читаем INI-файл

Существует множество способов хранения данных о настроке программы. Но при совместном использовании нескольких средств разработки удобно, чтобы все они были завязаны на INI-файл.

Общепринятая структура для INI-файлов:

[Секция]
Ключ = Значение

Вот мой вариант функции для чтения файла такого типа:

function ReadIni(cFileName, cSection, cKey)
	cError = 'INI_FILE_ERROR'
	cSection = '[' + upper(cSection) + ']'
	cKey = upper(alltrim(cKey))
	lSectFound = .f.
	if file(cFileName)
		hFile = fopen(cFileName, 12)
		if hFile < 0
			messagebox('Не удалось открыть файл!')
			return cError
		else
			do while not feof(hFile)
				cBuff = fgets(hFile, 2048)
				if alltrim(cBuff) = cSection or lSectFound
					lSectFound = .t.
					nPos = at('=', cBuff)
					if nPos > 0
						cCurKey = upper(alltrim(substr(cBuff, 1, nPos - 1)))
						if cCurKey == cKey
							fclose(hFile)
							return substr(cBuff, nPos + 1)
						endif
					endif
					nPos = at('[', cBuff)
					if nPos > 0 and alltrim(cBuff) <> cSection
						fclose(hFile)
						return cError
					endif
				endif
			enddo
			fclose(hFile)
			return cError
		endif
	else
		messagebox('Ini файл не найден!')
		return cError
	endif
endfunc

Эта функция вернет либо требуемое значение, либо значение ошибки (переменная cError). Результат:

51_1.gif (6828 b)

Вот так можно увидеть мой идентификатор (для KVA) в настройках.


Предыдущий Шаг | Оглавление
Автор Клементьев В.А - 3.09.2002