Seite 1 von 1
Laufzeitfehler beim Aufruf von QDir::setCurrent()
Verfasst: 27. April 2009 22:21
von Matthias_
Um meine Anwendung auch von anderen Orten korrekt starten zu können, setze ich zu Beginn den aktuellen Pfad mit
QDir::setCurrent(), welchen ich aus der registry auslese:
Code: Alles auswählen
QSettings *setting = new QSettings(QSettings::SystemScope, "MeinProgramm", "Directories");
QString path = setting->value("ExecutablePath").toString();
QDir::setCurrent(path);
Leider bekomme ich dabei jedes mal die Fehlermeldung :
Expression: (L"Buffer too small" && 0)
Ihch abe diese Zeile schon öfters debuggt und festgeselt das der Pfad richtug aus der Registry gelesen und der Funktion übergeben wird.
Kenn jemand das Problem und weiß wie man es lösen kann ?
Re: Laufzeitfehler beim Aufruf von QDir::setCurrent()
Verfasst: 27. April 2009 22:32
von neuschi
Matthias_ hat geschrieben:
QString path = setting->value("ExecutablePath").toString();
Wie lautet "path" an dieser Stelle? (qDebug() << path; )
Evtl. Probleme mit dem Backslash?
Was passiert, wenn du QDir::setCurrent() mit dem gleichen Wert als konstantem String aufrufst?
Oder versuch mal folgendes:
Code: Alles auswählen
QDir tmp( setting->value("ExecutablePath").toString());
QDir::setCurrent( tmp.absolutePath());
\Ralf
Verfasst: 28. April 2009 10:44
von Matthias_
Es tutet
Ich habe mal deinen Varante versucht und die funktioniert einwandfrei
Mein Pfad hört mit einem Backslash auf, geht aber mit und ohne.^^
Verfasst: 28. April 2009 13:16
von neuschi
Matthias_ hat geschrieben:
Mein Pfad hört mit einem Backslash auf, geht aber mit und ohne.^^
Das meinte ich aber nicht. Evtl. sind die Backslashes in deinem String nicht richtig maskiert, so dass z.B. bei "c:\Programme...." der Backslash und das 'P' nicht 2 Zeichen sind, sondern das als Sonderzeichen "\P" interpretiert wird. Daher die Bitte: poste mal deinen String, dann können wir evtl. erkennen, was dort falsch läuft.
Zum Debuggen bspw. mal folgendes einbauen:
Code: Alles auswählen
QString path = setting->value("ExecutablePath").toString();
qDebug() << path << "("<< path.length()<<")";
QDir tmp( setting->value("ExecutablePath").toString());
QString path2 = tmp.absolutePath() ;
qDebug() << path2 << "("<< path2.length()<<")";
Es ist ja schön, dass die andere Variante funktioniert, aber es wäre schon schön zu wissen, wo das Problem lag.
Gruß,
Ralf