Seite 1 von 1
QSettings und spezielle Zeichen
Verfasst: 29. September 2008 13:57
von Willi2793
Hallo,
ich bin ziemlich neu in QT. Ich möchte eine INI-Datei auslesen und habe das auch leidlich mit QSettings geschafft. Ich kann mich auch damit abfinden das der Backslash ("\") innerhalb eines Keys Probleme macht.
aber ist es nicht möglich ";" (Semikolon) oder "," (Komma) in einem Key zu verwenden? Bei einem Semikolon wird der Key nur bis genau dahin gelesen und bei einem Komma wird der gesamte Key ignoriert.
Ist das änderbar und wenn ja, wie?
Danke und Grüße,
Willi
Verfasst: 29. September 2008 14:05
von Christian81
Du schreibst Daten mit QSettings und kannst sie später nicht mehr damit einlesen? Oder möchtest Du eine nicht mit QSettings erstellt ini-Datei einlesen?
Die von Dir erwähnten Zeichen müssen escaped werden damit sie korrekt als Zeichen und nicht als Separator usw. erkannt werden.
Verfasst: 29. September 2008 14:11
von Willi2793
Die Dateien werden nicht mit QSettings erstellt. Wo kann ich denn eine Liste aller zeichen finden die escaped werden müssen?
Verfasst: 29. September 2008 14:40
von Christian81
Wenn in der QSettgins-Doku nichts steht wüsste ich nicht wo - da hilft dann wohl nur probieren.
Verfasst: 29. September 2008 17:02
von solarix
spannend... ich dachte bisher immer, dass nur nur (back)slash betroffen sind:
Do not use slashes ('/' and '\') in key names; the backslash character is used to separate sub keys (see below). On windows '\' are converted by QSettings to '/', which makes them identical.
Alle weiteren Zeichen sind IMHO Bugs..
wie z.B.
http://trolltech.com/developer/task-tra ... &id=131818
Verfasst: 29. September 2008 19:26
von Willi2793
solarix hat geschrieben:spannend... ich dachte bisher immer, dass nur nur (back)slash betroffen sind:
Do not use slashes ('/' and '\') in key names; the backslash character is used to separate sub keys (see below). On windows '\' are converted by QSettings to '/', which makes them identical.
Alle weiteren Zeichen sind IMHO Bugs..
wie z.B.
http://trolltech.com/developer/task-tra ... &id=131818
Hm, ich nutze aber 4.4 und da ist der Bug mit dem Semikolon immer noch (oder wieder?) vorhanden? Und das mit dem Komma finde ich noch verwunderlicher. Sollte ich da einen Bug melden?
Verfasst: 29. September 2008 19:37
von Christian81
Erstmal ein Testcase schreiben und schauen was passiert wenn Du ein Semikolion/Komm sepicherst.
Verfasst: 29. September 2008 19:42
von Willi2793
Wieso speichern? Ich will es nur lesen! Die Dateien werden manuell erstellt, sprich: nicht über QSettings.
Verfasst: 29. September 2008 20:37
von Christian81
Wenn man ein Semikolion speichert und dann wieder lädt sieht man ja wohl wie Qt das abspeichert und ob es korrekt geladen wird. Testcase eben.
Verfasst: 30. September 2008 09:25
von solarix
Also
Code: Alles auswählen
#include <QCoreApplication>
#include <QSettings>
#include <QDebug>
int main(int argc, char *argv[])
{
QCoreApplication::setOrganizationName("MySoft");
QCoreApplication::setOrganizationDomain("mysoft.com");
QCoreApplication::setApplicationName("Star Runner");
{
QSettings settings;
settings.setValue("test;1", ";string;test");
settings.setValue("test,2", ",string,test");
}
{
QSettings settings;
qDebug() << settings.value("test;1");
qDebug() << settings.value("test,2");
}
}
funktioniert einwandfrei... in der Config-File wird
Code: Alles auswählen
[General]
test%2C2=",string,test"
test1="string;test"
test2="string,test"
test%3B1=";string;test"
eingetragen... ich denke jetzt ist klar, wie du die Daten zu speichern hast..
Verfasst: 30. September 2008 12:44
von Willi2793
Vielen Dank!
Hatte heute im Zug auch die Gelegenheit das zu testen und bin erstaunlicher Weise zum selben Ergebnis gekommen
Meine beiden Probleme können also geschlossen werden.
