Автор: Robby
Дата сообщения: 08.05.2011 21:11
Часто бывает нужно сохранить (загрузить) настройки в (из) ini файла, вот набросал универсальную процедуру для этого.
Функция сохранения / чтения настроек проекта в /из ini файла: [more]
Код: -- функция сохранения/чтения насторек из ini файла
-- первый параметр strPathIni - (строка) путь к файлу ini;
-- второй параметр (сторока) strAction действие значения "load" или "save"
IniFiles = function (strPathIni, strAction)
tblObjectType={};
tblObjectType[7]={name="OBJECT_INPUT", result = function (object) return Input.GetText(object); end};
tblObjectType[10]={name="OBJECT_COMBOBOX", result = function (object) return ComboBox.GetSelected(object); end};
tblObjectType[13]={name="OBJECT_RADIOBUTTON", result = function (object) return RadioButton.GetChecked(object); end};
tblObjectType[15]={name="OBJECT_CHECKBOX", result = function (object) return CheckBox.GetChecked(object); end}; -- типы объектов значения которых нужно сохранять/считывать из ini
if strAction=="load" then
if File.DoesExist(strPathIni) then
tblSection_names = INIFile.GetSectionNames(strPathIni);
if tblSection_names then
for index_section, section in pairs(tblSection_names) do
tblAllValue_names = INIFile.GetValueNames(strPathIni, section);
if tblAllValue_names then
for index_value, value in pairs(tblAllValue_names) do
if section == "OBJECT_INPUT" then
Input.SetText(value, INIFile.GetValue(strPathIni, section, value));
elseif section == "OBJECT_COMBOBOX" then
ComboBox.SetSelected(value, INIFile.GetValue(strPathIni, section, value));
elseif section == "OBJECT_RADIOBUTTON" then
if INIFile.GetValue(strPathIni, section, value) == "true" then
RadioButton.SetChecked(value, true);
else
RadioButton.SetChecked(value, false);
end
elseif section == "OBJECT_CHECKBOX" then
if INIFile.GetValue(strPathIni, section, value) == "true" then
CheckBox.SetChecked(value, true);
else
CheckBox.SetChecked(value, false);
end
end
end
end
end
end
end
elseif strAction=="save" then
object_names = Page.EnumerateObjects();
error = Application.GetLastError();
if (error ~= 0) then
Dialog.Message("Error", _tblErrorMessages[error], MB_OK, MB_ICONEXCLAMATION);
else
if (object_names == nil) then
Dialog.Message("Notice", "Нет объектов на текущей странице!", MB_OK, MB_ICONEXCLAMATION);
else
for index, object in pairs(object_names) do
typeObj = Page.GetObjectType(object);
if (tblObjectType[typeObj]) then
local strSection = tblObjectType[typeObj].name;
local strValue=object;
local strData = tblObjectType[typeObj].result(object);
INIFile.SetValue(strPathIni, strSection, strValue, tostring(strData));
end
end
end
end
end
end