crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> QSettings. Escape-последовательности в ini файлах
Klabush
  опции профиля:
сообщение 14.1.2008, 13:38
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 8
Регистрация: 10.10.2007
Пользователь №: 7

Спасибо сказали: 0 раз(а)




Репутация:   0  


Обычно из инишки данные читаются как-то так:

QSettings Settings("Program.ini", QSettings::IniFormat);
Settings.beginGroup("Common");
QString Path = Settings.value("Path", "").toString();


Но если значение какого-либо ключа в ini файле будет содержать бэкслеш (\), то он воспримется как escape-последовательность.

То есть если у нас в инишке

[Common]
Path=c:\test\77.txt


то в программе мы получим значение Path

c:<символ табуляции>estM.txt


Как эту "фичу" обойти?
Хотелось бы получить строку как она есть.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
molchanoviv
  опции профиля:
сообщение 30.12.2009, 17:38
Сообщение #2


Старейший участник
****

Группа: Сомодератор
Сообщений: 597
Регистрация: 18.7.2008
Из: Саратов
Пользователь №: 238

Спасибо сказали: 41 раз(а)




Репутация:   5  


Подниму старую тему. Может кому-то понадобится. чтобы не писать свой парсер 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();
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- Klabush   QSettings. Escape-последовательности в ini файлах   14.1.2008, 13:38
- - archimed7592   Цитата(Klabush @ 14.1.2008, 13:38) Как эт...   14.1.2008, 13:45
|- - Klabush   Цитата(archimed7592 @ 14.1.2008, 13:45) 1...   14.1.2008, 14:01
- - archimed7592   Ну, не посвящённым в таинства С++ админам не соста...   14.1.2008, 14:14
- - ViGOur   Цитата(archimed7592 @ 14.1.2008, 14:14) Н...   14.1.2008, 14:18
- - kuler   а у меня проблема наоборот, нужно сохранить ключ a...   10.11.2008, 11:24
- - Litkevich Yuriy   kuler, код приведи, как ты это делаешь   10.11.2008, 14:06
- - kuler   QSettings settings("Unit", "Subunit...   10.11.2008, 14:15
- - Litkevich Yuriy   судя по примерам в описании класса QSettings, это ...   10.11.2008, 14:39
|- - AD   Цитата(Litkevich Yuriy @ 10.11.2008, 14:3...   10.11.2008, 14:55
- - kuler   AD, это из хелпа   10.11.2008, 15:13
|- - AD   Цитата(kuler @ 10.11.2008, 15:13) AD, эт...   10.11.2008, 17:24
- - kuler   выдает 58, тк такое значение есть, выдает 1024 тк ...   10.11.2008, 17:27
- - Litkevich Yuriy   Цитата(AD @ 10.11.2008, 20:24) Какая разн...   10.11.2008, 18:07
|- - AD   Цитата(Litkevich Yuriy @ 10.11.2008, 18:0...   10.11.2008, 18:37
- - molchanoviv   Подниму старую тему. Может кому-то понадобится. чт...   30.12.2009, 17:38


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 19.4.2024, 8:02