Обычно из инишки данные читаются как-то так:
QSettings Settings("Program.ini", QSettings::IniFormat);
Settings.beginGroup("Common");
QString Path = Settings.value("Path", "").toString();
[Common]
Path=c:\test\77.txt
c:<символ табуляции>estM.txt
Ну, не посвящённым в таинства С++ админам не составляет труда писать reg файлы(реестр), а так дело твоё - можешь выбрать ручной парсинг. Кстати, в случае xml-настроек тоже нужно "экранировать" некоторые символы. Да и вообще, ini устарел .
а у меня проблема наоборот, нужно сохранить ключ abc/def, а он делает ветку abc а в ней ключ def. Символ подавления \ не срабатывает
kuler, код приведи, как ты это делаешь
QSettings settings("Unit", "Subunit");
settings.setValue("af\/vb", "xxx");
хотел бы чтоб был ключ af/vb со значением xxx
судя по примерам в описании класса QSettings, это возможно.
Ты какой формат используешь и на какой системе?
ага, я кажется понял. слэш всяко будет суб ключи создавать, но ты можешь и обращатся в той же манере к ним как и записывал:
QSettings settings;
settings.setValue("animal/snake", 58);
settings.value("animal/snake", 1024).toInt(); // returns 58
settings.value("animal/zebra", 1024).toInt(); // returns 1024
settings.value("animal/zebra").toInt(); // returns 0
settings.value("animal/snake", 1024).toInt(); // returns 58
settings.value("animal/zebra", 1024).toInt(); // returns 1024
settings.value("animal/zebra").toInt(); // returns 0
AD,
это из хелпа
выдает 58, тк такое значение есть, выдает 1024 тк animal/zebra нет, выдает 0, тк не установлено значение по умолчанию (до этого было 1024)
Подниму старую тему. Может кому-то понадобится. чтобы не писать свой парсер INI-файлов я просто скоприовал файл, и заменил там \ на \\ прочел нужные пути, а затем просто удалил копию. Но этот костыль лучше применять только в случае если трогать чужую инишку нельзя.
QFile data(path);
QString line;
if (data.open(QFile::ReadOnly))
{
data.copy("tmpfile");
data.close();
}
QFile file("tmpfile");
if (file.open(QFile::ReadWrite))
{
QTextStream in(&file);
line = in.readAll();
line.replace(QString("\\"), QString("\\\\"));
in <<line;
file.close();
}
QSettings workplace(file.fileName(), QSettings::IniFormat);
//считываем нужные параметры
file.remove();
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)