int IniFile::getInt(const String& section, const String& key) const
{
    const GenericScopedLock<CriticalSection> scopedlock(lock);
    String realSection(section);
    if (realSection.isEmpty()) {
        realSection = "__empty";
    }

    if (!data.contains(realSection)) {
        return getDefaultInt(section, key);
    }
    
    DynamicObject *sectionObject = data[realSection].getDynamicObject();
    if (sectionObject->getProperty(key) == var::null) {
        return getDefaultInt(section, key);
    }
    return sectionObject->getProperty(key);
}
	// Загружаем переменную из библиотеки
	void Skin::loadValue(eSkinParam param, string name)
	{
		if (getType(param) == ecvString) {
			setString(param, getNewStrValue(getString(param), name, getDefaultString(param)));
		} else if (getType(param) == ecvInt) {
			setInt(param, getNewNumValue(getInt(param), name, getDefaultInt(param)));
		} else {
			showError("Не инициализировано значение");
		}
	}
	// Устанавливаем значения по умолчанию
	void Skin::resetSettings()
	{
		for (int i = 0; i < espLast; i++) {
			eSkinParam eIterator = (eSkinParam)i;
			if (getType(eIterator) == ecvString) {
				setString(eIterator, getDefaultString(eIterator));
			} else if (getType(eIterator) == ecvInt) {
				setInt(eIterator, getDefaultInt(eIterator));
			} else {
				showError("Не инициализировано значение");
			}
		}

		firstUpdate = true;
	}