Hallo,
ich suche einen Weg, die QMap Einträge schnell zu speichern bzw. wieder einzulesen. Derzeit speichere ich die Einträge zeilenweise in eine Textdatei, was zwar funktioniert, aber die Zuordnung der einzelnen Zeilen beim Einlesen der Textdatei zur QMap dauert bei 2000 Einträgen schon mal 6 bis 7 Sekunden.
Gibt es einen schnelleren Weg bzw. eine bessere Methode?
mfg
Herbert
[gelöst] QMap speichern
[gelöst] QMap speichern
Zuletzt geändert von hs60 am 4. Februar 2010 12:12, insgesamt 1-mal geändert.
Re: QMap speichern
Öha, da ist ja jeder XML-Parser bei der 1000-fachen Größe schneller...hs60 hat geschrieben:Einlesen der Textdatei zur QMap dauert bei 2000 Einträgen schon mal 6 bis 7 Sekunden.
Ich tippe auf miesen Alkorythmus - äh Algorithmus.
Zeig mal wie du das bisher machst, dann gibt es konkrete Tips.
mit dieser Routine lese ich derzeit aus:
Ich wollte das ganze auch mit TextStream versuchen, doch da komme ich mit der Dokumentation zu TextStream schon nicht klar.
Eine Deklaration wie z.B.
scheitert bereits in einer Fehlermeldung, obwohl es in der Doku so beschrieben ist.
mfg
Herbert
Code: Alles auswählen
void MainWindow::ReferenzListeLesen(QString pn)
{
QString s1, s2;
map.clear();
QString kDateiName = "ref" + pn + ".txt";
kDatei = new QFile(PgmPfad + "/" + kDateiName);
if (kDatei->exists(PgmPfad + "/" + kDateiName))
{
if (kDatei->open(QIODevice::ReadOnly | QIODevice::Text))
{
while (!kDatei->atEnd())
{
QString s1 = kDatei->readLine(); // DateiName
s1 = s1.left(s1.length()-1);
QString s2 = kDatei->readLine(); // DateiDatum
s2 = s2.left(s2.length()-1);
map[s1] = s2;
}
kDatei->close();
}
}
}
Eine Deklaration wie z.B.
Code: Alles auswählen
QTextStream stream(&kDatei)
mfg
Herbert
Ich hätte an soetwas gedacht:
und
Zu deinem Versuch: kDatei ist bereits ein Zeiger, daher muß kein & davor.
Code: Alles auswählen
QMap myMap;
QDataStream stream(kDatei);
stream >> myMap;
Code: Alles auswählen
QDataStream stream(kDatei);
stream << myMap;