Существует множество способов хранения данных о настроке программы. Но при совместном использовании нескольких средств разработки удобно, чтобы все они были завязаны на 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). Результат:
Вот так можно увидеть мой идентификатор (для KVA) в настройках.